Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| 1_generalites:erreurs_de_debutant [2023/07/17 06:12] – Création de la page d'après un exposé de Barbara Beeton à la conférence TUG 2023. jejust | 1_generalites:erreurs_de_debutant [2023/07/18 21:01] (Version actuelle) – Suite et fin de l'article en anglais. jejust | ||
|---|---|---|---|
| Ligne 2: | Ligne 2: | ||
| ===== Abstract ===== | ===== Abstract ===== | ||
| - | LaTeX has a reputation for producing excellent | + | |
| - | sults, but at the cost of a steep learning curve. That’s | + | LaTeX has a reputation for producing excellent |
| - | true, but by understanding a few basic principles, | + | but at the cost of a steep learning curve. |
| - | and learning how to avoid some techniques that may | + | That’s true, but by understanding a few basic principles, |
| - | seem obvious but often lead one into the weeds, it’s | + | and learning how to avoid some techniques that may seem obvious |
| - | possible to avoid some of that pain. Our goal here | + | but often lead one into the weeds, it’s possible to avoid |
| - | is to encourage good habits before bad habits have | + | some of that pain. Our goal here is to encourage good habits |
| - | had a chance to develop. | + | before bad habits have had a chance to develop. |
| ===== Introduction ===== | ===== Introduction ===== | ||
| Ligne 16: | Ligne 16: | ||
| * In the author’s years as part of the TeXnical support team for a major math publisher, responsibilities included fielding questions from authors and writing user documentation. | * In the author’s years as part of the TeXnical support team for a major math publisher, responsibilities included fielding questions from authors and writing user documentation. | ||
| - | * The online TeX forum at StackExchange1 | + | * The online |
| - | [[https:// | + | |
| <note tip> | <note tip> | ||
| Ligne 44: | Ligne 43: | ||
| ==== Command line ==== | ==== Command line ==== | ||
| - | Most new users these days enter | + | Most new users these days enter (La)TeX from an editor or other GUI, |
| - | (La)TeX from an editor or other GUI, and launch a | + | and launch a non-interactive job that will blithely keep on processing |
| - | non-interactive job that will blithely keep on process- | + | the file until it finishes (with or without errors) or hangs in a loop. |
| - | ing the file until it finishes (with or without errors) | + | Launching the compilation from the command line, on the other hand, |
| - | or hangs in a loop. Launching the compilation from | + | allows one to interact with the session and, in certain cases, |
| - | the command line, on the other hand, allows one to | + | make corrections “on the fly”, or if that’s not possible, halt the job |
| - | interact with the session and, in certain cases, | + | in case of an error before the collection of reported errors becomes unhelpful. |
| - | corrections “on the fly”, or if that’s not possible, halt | + | One type of “fixable” error is a misspelled command: |
| - | the job in case of an error before the collection of | + | |
| - | reported errors becomes unhelpful. One type of “fixable” | + | |
| - | error is a misspelled command: | + | |
| < | < | ||
| ! Undefined control sequence. | ! Undefined control sequence. | ||
| Ligne 67: | Ligne 63: | ||
| hit “return”, | hit “return”, | ||
| file when you come to a good stopping point. | file when you come to a good stopping point. | ||
| - | A misspelled environment name can’t be cor- | + | A misspelled environment name can’t be corrected |
| - | rected | + | if that happens, cancel the job with an '' |
| - | an x, fix the file, and start over. Continuing a run | + | and start over. Continuing a run after an unfixable error will just |
| - | after an unfixable error will just result in more er- | + | result in more error messages, most of which are meaningless and |
| - | ror messages, most of which are meaningless and | + | |
| confusing, so it’s best to avoid them. | confusing, so it’s best to avoid them. | ||
| Ligne 129: | Ligne 124: | ||
| A user can define new commands, or assign new meanings to existing commands. | A user can define new commands, or assign new meanings to existing commands. | ||
| LaTeX provides '' | LaTeX provides '' | ||
| - | \newcommand checks to make sure that the command | + | \newcommand checks to make sure that the command name hasn’t been used before, |
| - | name hasn’t been used before, and complains if it has. | + | and complains if it has. (The basic TeX '' |
| - | (The basic TeX '' | + | to redefine a command that already exists, the recommended way is to use |
| - | redefine a command that already exists, the recommended way is to use '' | + | '' |
| - | you know what you’re doing. For example, redefining | + | For example, redefining '' |
| - | '' | + | for many different formatting adjustments, |
| - | for many different formatting adjustments, | + | |
| - | very easy to mess things up. | + | |
| Single-letter commands are also bad candidates | Single-letter commands are also bad candidates | ||
| Ligne 144: | Ligne 137: | ||
| an accent in a references list. For (a bad) example, | an accent in a references list. For (a bad) example, | ||
| consider the author Haïm Brezis: | consider the author Haïm Brezis: | ||
| + | |||
| + | <WRAP column 48ex> | ||
| <code latex> | <code latex> | ||
| \renewcommand{\i}{\ensuremath{\sqrt{-1}}} | \renewcommand{\i}{\ensuremath{\sqrt{-1}}} | ||
| Brezis, Ha\" | Brezis, Ha\" | ||
| </ | </ | ||
| - | <latex> | + | </WRAP> |
| + | <WRAP column 25ex> | ||
| + | < | ||
| + | \documentclass{article} | ||
| + | % With T1 enabled, \"\i yields accented i, not bad sqrt. | ||
| + | % See https:// | ||
| + | % %\usepackage[T1]{fontenc} | ||
| + | \pagestyle{empty} | ||
| + | \begin{document} | ||
| \renewcommand{\i}{\ensuremath{\sqrt{-1}}} | \renewcommand{\i}{\ensuremath{\sqrt{-1}}} | ||
| Brezis, Ha\" | Brezis, Ha\" | ||
| - | </latex> | + | \end{document} |
| + | </latexdoc> | ||
| + | </ | ||
| + | <WRAP clear /> | ||
| - | Single-digit commands ('' | + | Single-digit commands ('' |
| - | predefined in core LaTeX, so are available for ad hoc use | + | in core LaTeX, so are available for ad hoc use. |
| === Environments === | === Environments === | ||
| + | An // | ||
| + | <code latex> | ||
| + | \begin{⟨env-name⟩} | ||
| + | ... | ||
| + | \end{⟨env-name⟩}. | ||
| + | </ | ||
| + | The environment name must match at beginning and end; | ||
| + | if it doesn’t, this error is reported in the log file and on the terminal:\\ | ||
| + | '' | ||
| + | Most environments can be nested, but the proper sequence | ||
| + | must be maintained. | ||
| + | Other commands are available to provide | ||
| + | new definitions --- '' | ||
| + | '' | ||
| + | similar ones for redefinitions. For details on these, | ||
| + | consult a current reference. | ||
| === Modes === | === Modes === | ||
| + | Generally speaking, the current mode identifies where you are | ||
| + | on the (output) page, but here we will take a point of view | ||
| + | based on the input/ | ||
| + | There are three modes: vertical, horizontal and math. | ||
| + | |||
| + | Starting after '' | ||
| + | or an explicit '' | ||
| + | Certain operations are best launched in vertical mode; | ||
| + | more about this later. | ||
| + | |||
| + | Starting to input ordinary text is one way to enter horizontal mode. | ||
| + | Other transitions from vertical to horizontal mode are '' | ||
| + | '' | ||
| + | multiple consecutive spaces are treated as a single space; | ||
| + | consecutive is essential here. An end-of-line (EOL) is treated | ||
| + | as a space, even though it’s not explicitly visible in the source file; | ||
| + | a GUI that wraps lines may or may not (usually not) insert an EOL, | ||
| + | and different operating systems define an EOL differently, | ||
| + | such differences are taken care of by the TEX engine. | ||
| + | Spaces at the beginning of a line are ignored. More | ||
| + | about spaces later on. | ||
| + | |||
| + | The third mode, math, can be embedded in-line | ||
| + | in text or set as display material in vertical mode. | ||
| + | Inline math is wrapped in '' | ||
| + | by '' | ||
| + | be indicated by '' | ||
| + | are best entered using the environments provided by | ||
| + | the [[ctanpkg> | ||
| + | (Refer to the user documentation; | ||
| + | so it’s not necessary to load both.) A math display is | ||
| + | usually a continuation of the preceding paragraph, | ||
| + | so don’t leave a blank line between a display and the | ||
| + | preceding text; to do so can result in an unwanted | ||
| + | page break. | ||
| + | |||
| + | Within math mode, blank lines are not allowed; | ||
| + | this was a decision made by Knuth, to catch unintentional input lapses, | ||
| + | since math never continues across a paragraph break. | ||
| === Scope === | === Scope === | ||
| + | Along with modes, there is the concept of scope, | ||
| + | making it possible to localize definitions and operations. | ||
| - | === Spacing in text === | + | Math mode is one instance of scope; certain characters |
| + | and operations are valid only within math, | ||
| + | and others are invalid there. Within | ||
| + | usually begins and ends with '' | ||
| + | be matched. Display math breaks the flow of text; | ||
| + | closing a display returns to text mode unless followed | ||
| + | by a blank line or \par. More about math later. | ||
| + | Another way of delimiting scope is to wrap the | ||
| + | material in braces: '' | ||
| + | meaning of a command may be changed for temporary effect; | ||
| + | the definition in effect before the opening brace will be restored | ||
| + | as soon as the closing brace is digested. Instead of a brace pair, | ||
| + | the commands '' | ||
| + | Another way to have a scoped environment is to pack | ||
| + | the material in a “box”. This may be a '' | ||
| + | '' | ||
| + | in packages like [[ctanpkg> | ||
| + | Some environments (not all) are defined to be a | ||
| + | scope. One such is the '' | ||
| + | which text is italic; when the theorem ends, the text | ||
| + | style automatically reverts to the document default. | ||
| + | |||
| + | ==== Spacing in text ==== | ||
| + | |||
| + | A goal of high-quality typesetting is even spacing in text. | ||
| + | This is really possible only with ragged-right setting, | ||
| + | where spaces are “natural width”. | ||
| + | But even margins are usually preferred, so TeX is designed to | ||
| + | optimize spacing in that context. | ||
| + | |||
| + | In U.S. documents, spaces that end sentences are wider | ||
| + | than interword spaces. This is not true for documents in other languages, | ||
| + | and can be turned off with '' | ||
| + | But in academic documents, frequent abbreviations can make it difficult | ||
| + | to tell where sentences end. To avoid a too-wide space after | ||
| + | an abbreviation, | ||
| + | |||
| + | <WRAP column 48ex> | ||
| + | <code latex> | ||
| + | abc vs. xyz | ||
| + | |||
| + | abc vs.\ xyz | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP column 25ex> | ||
| + | < | ||
| + | abc vs. xyz | ||
| + | |||
| + | abc vs.\ xyz | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP clear /> | ||
| + | |||
| + | If the line shouldn’t break after the abbreviation, | ||
| + | follow the period by '' | ||
| + | <WRAP column 48ex> | ||
| + | <code latex> | ||
| + | seen on p.~23. | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP column 25ex> | ||
| + | < | ||
| + | seen on p.~23. | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP clear /> | ||
| + | |||
| + | A similar, but reverse, situation can occur when an uppercase letter | ||
| + | is followed by a period. This is assumed to be the initial of a name; | ||
| + | it usually is, and an ordinary interword space is set. | ||
| + | But sometimes the uppercase letter is at the end of an acronym, | ||
| + | and that ends a sentence. In such a case, add '' | ||
| + | and it will restore the wider end-of-sentence space. | ||
| + | |||
| + | All this boils down to a simple rule: Except at the end of a sentence | ||
| + | (and to a lesser extent after other punctuation symbols or within math), | ||
| + | all spaces within the same line should be the same width. | ||
| + | If they’re not, something is fishy. | ||
| === Spurious spaces === | === Spurious spaces === | ||
| + | Multiple spaces can infiltrate a source file in several ways, | ||
| + | but the overwhelming majority are the result of trying too hard | ||
| + | to define commands in such a way that they are visually pleasing | ||
| + | (and easily readable). For example: | ||
| + | <WRAP column 48ex> | ||
| + | <code latex> | ||
| + | | ||
| + | \emph{abc def} | ||
| + | } | ||
| + | |||
| + | word \abc\ word | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP column 25ex> | ||
| + | < | ||
| + | | ||
| + | \emph{abc def} | ||
| + | } | ||
| + | |||
| + | word \abc\ word | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP clear /> | ||
| + | With this, the input '' | ||
| + | < | ||
| + | with extra spaces inserted by our '' | ||
| + | The offending spaces can be evicted by inserting '' | ||
| + | where it will “hide” an end-of-line: | ||
| + | <WRAP column 48ex> | ||
| + | <code latex> | ||
| + | | ||
| + | \emph{abc def}% | ||
| + | } | ||
| + | |||
| + | word \abc\ word | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP column 25ex> | ||
| + | < | ||
| + | | ||
| + | \emph{abc def}% | ||
| + | } | ||
| + | |||
| + | word \abc\ word | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP clear /> | ||
| + | to produce the desirable < | ||
| + | The '' | ||
| + | of the input line, including the end-of-line. | ||
| + | |||
| + | Another source of extra spaces in the output can be caused by the presence | ||
| + | of multiple consecutive elements that aren’t part of the main text, | ||
| + | like footnotes or index entries: | ||
| + | <WRAP column 48ex> | ||
| + | <code latex> | ||
| + | An important topic\index{abc} | ||
| + | \index{def} | ||
| + | \index{xyz} | ||
| + | is indexed several ways. | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP column 25ex> | ||
| + | < | ||
| + | \documentclass[10pt, | ||
| + | |||
| + | \usepackage[utf8]{inputenc} | ||
| + | \usepackage[T1]{fontenc} | ||
| + | \usepackage{amsmath, | ||
| + | \usepackage{xcolor} | ||
| + | |||
| + | \pagestyle{empty} | ||
| + | |||
| + | \makeindex | ||
| + | |||
| + | \begin{document} | ||
| + | An important topic\index{abc} | ||
| + | \index{def} | ||
| + | \index{xyz} | ||
| + | is indexed several ways. | ||
| + | \end{document} | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP clear /> | ||
| + | Here, the EOL effect has again occurred (after “topic”), | ||
| + | and these spaces are no longer contiguous. Again | ||
| + | the '' | ||
| + | <WRAP column 48ex> | ||
| + | <code latex> | ||
| + | An important topic\index{abc}% | ||
| + | \index{def}% | ||
| + | \index{xyz} | ||
| + | is indexed several ways. | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP column 25ex> | ||
| + | < | ||
| + | \documentclass[10pt, | ||
| + | |||
| + | \usepackage[utf8]{inputenc} | ||
| + | \usepackage[T1]{fontenc} | ||
| + | \usepackage{amsmath, | ||
| + | \usepackage{xcolor} | ||
| + | |||
| + | \pagestyle{empty} | ||
| + | |||
| + | \makeindex | ||
| + | |||
| + | \begin{document} | ||
| + | An important topic\index{abc}% | ||
| + | \index{def}% | ||
| + | \index{xyz} | ||
| + | is indexed several ways. | ||
| + | \end{document} | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP clear /> | ||
| + | Do remember to leave one space. | ||
| === Sometimes using a % is a bad idea === | === Sometimes using a % is a bad idea === | ||
| Ligne 188: | Ligne 446: | ||
| (If “plus” or “minus” is there and happens to be actual | (If “plus” or “minus” is there and happens to be actual | ||
| text, a confusing error message will be produced, but | text, a confusing error message will be produced, but | ||
| - | that is rare, and beyond the scope of this discussion | + | that is rare, and beyond the scope of this discussion.) |
| === Really unexpected extra spaces === | === Really unexpected extra spaces === | ||
| + | Other possibilities exist that aren’t so predictable. | ||
| + | Here’s one that was the subject of an online question. | ||
| + | A text using package [[ctanpkg> | ||
| + | [[ctanpkg> | ||
| + | in the middle of a word. A small frame was applied around the colored element | ||
| + | by the package: | ||
| + | <WRAP column 48ex> | ||
| + | <code latex> | ||
| + | \usepackage{tcolorbox} | ||
| + | |||
| + | \newcommand{\pink}[1]{% | ||
| + | \colorbox{red!20}{# | ||
| + | |||
| + | Oo\pink{p}s! | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP column 25ex> | ||
| + | < | ||
| + | \documentclass[10pt]{article} | ||
| + | \usepackage[utf8]{inputenc} | ||
| + | \usepackage[T1]{fontenc} | ||
| + | \usepackage{tcolorbox} | ||
| + | |||
| + | \pagestyle{empty} | ||
| + | |||
| + | \newcommand{\pink}[1]{% | ||
| + | \colorbox{red!20}{# | ||
| + | |||
| + | \begin{document} | ||
| + | Oo\pink{p}s! | ||
| + | \end{document} | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP clear /> | ||
| + | |||
| + | Explicitly omitting the buffer inside the frame was | ||
| + | the solution provided by the package documentation: | ||
| + | |||
| + | <WRAP column 48ex> | ||
| + | <code latex> | ||
| + | \usepackage{tcolorbox} | ||
| + | |||
| + | \renewcommand{\pink}[1]{{% | ||
| + | \fboxsep=0pt | ||
| + | \colorbox{red!20}{# | ||
| + | |||
| + | Oo\pink{p}s! | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP column 25ex> | ||
| + | < | ||
| + | \documentclass[10pt]{article} | ||
| + | \usepackage[utf8]{inputenc} | ||
| + | \usepackage[T1]{fontenc} | ||
| + | \usepackage{tcolorbox} | ||
| + | |||
| + | \pagestyle{empty} | ||
| + | |||
| + | \renewcommand{\pink}[1]{{% | ||
| + | \fboxsep=0pt | ||
| + | \colorbox{red!20}{# | ||
| + | |||
| + | \begin{document} | ||
| + | Oo\pink{p}s! | ||
| + | \end{document} | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP clear /> | ||
| + | |||
| + | I added the '' | ||
| + | above and below the highlighted element, rather than covering only the “< | ||
| + | While this isn’t really a newbie problem, it’s wise to be aware that such | ||
| + | possibilities exist, and be ready in such cases to seek expert assistance! | ||
| === Paragraph endings and vertical mode === | === Paragraph endings and vertical mode === | ||
| + | The end of a paragraph is a transition from horizontal to vertical mode. | ||
| + | A blank line or '' | ||
| + | to be aware of what mode you’re in, since some operations are best performed | ||
| + | in vertical mode; the most important is the insertion of floats | ||
| + | (figures, tables, algorithms). | ||
| - | === The double backslash | + | Another important consideration is that some features of text are |
| + | not “frozen” until a paragraph is ended. One important feature is | ||
| + | the vertical spacing of baselines, which depends on the font size. | ||
| + | Too many newbies try to end a paragraph with a double backslash, | ||
| + | resulting in horrors like the following. | ||
| + | <WRAP column 48ex> | ||
| + | <code latex> | ||
| + | \Huge Texts with inconsistent descenders | ||
| + | can result in surprises when the font | ||
| + | size changes without a proper paragraph | ||
| + | ending.\\ | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP column 25ex> | ||
| + | < | ||
| + | \begin{minipage}{8.2cm} | ||
| + | \Huge Texts with inconsistent descenders | ||
| + | can result in surprises when the font | ||
| + | size changes without a proper paragraph | ||
| + | ending.\\ | ||
| - | ==== Font changee | + | \end{minipage} |
| + | </ | ||
| + | </ | ||
| + | <WRAP clear /> | ||
| + | |||
| + | Some environments (but not //all//) are defined with a paragraph break | ||
| + | at the end. A problem such as the one shown here won’t result | ||
| + | in an error or warning message, so adding a proper paragraph break | ||
| + | is the proper correction. | ||
| + | |||
| + | The vertical space between paragraphs is determined by the value | ||
| + | of '' | ||
| + | as needed. But often, it’s convenient to add occasional extra space | ||
| + | between paragraphs explicitly; this is done with '' | ||
| + | '' | ||
| + | or '' | ||
| + | |||
| + | |||
| + | === The double backslash \\ === | ||
| + | |||
| + | What a paragraph does not end with is the control symbol '' | ||
| + | '' | ||
| + | poetry, multi-line math environments, | ||
| + | But it does not end a paragraph and can trigger a number of error or warning messages. | ||
| + | |||
| + | If '' | ||
| + | < | ||
| + | ! LaTeX Error: | ||
| + | There’s no line here to end. | ||
| + | </ | ||
| + | |||
| + | Further, if the '' | ||
| + | in addition to the warning, there may be an extra, | ||
| + | unwanted, blank line in the output. | ||
| + | |||
| + | If a line ending with '' | ||
| + | |||
| + | < | ||
| + | Underfull \hbox (badness 10000) | ||
| + | in paragraph at lines ... | ||
| + | </ | ||
| + | |||
| + | This may be okay, but check. | ||
| + | |||
| + | If '' | ||
| + | the result will be the mysterious message | ||
| + | < | ||
| + | ! Missing number, treated as zero. | ||
| + | </ | ||
| + | |||
| + | For '' | ||
| + | a vertical distance to be skipped; insert '' | ||
| + | If extra vertical space is wanted after a line broken with '' | ||
| + | it can be added by inserting an optional rubber length (usually just a dimension), | ||
| + | wrapped in brackets: '' | ||
| + | to be typeset, it must be preceded by '' | ||
| + | |||
| + | '' | ||
| + | |||
| + | ==== Font changes | ||
| + | |||
| + | Font changes are a time-honored method of communicating shades | ||
| + | of meaning or pointing out distinct or particularly important concepts. | ||
| + | Many such instances are built into document classes and packages; | ||
| + | for example, theorems are set in an italic font, section headings in bold, and some journals set figure captions in sans serif to distinguish them | ||
| + | from the main text. | ||
| + | |||
| + | LaTeX provides two distinct methods for making font changes. | ||
| + | Commands of one class take an argument and limit the persistence | ||
| + | of the change to the content of that argument; these have the form | ||
| + | of '' | ||
| + | etc. The other class sets the font style so that it will not change | ||
| + | until another explicit change is made, or it is limited by the scope | ||
| + | of an environment; | ||
| + | and '' | ||
| + | in a good user guide. | ||
| + | |||
| + | Several font-changing commands do different things depending | ||
| + | on the context. '' | ||
| + | if the current text is upright, or to upright if the current text | ||
| + | is italic. Within math, '' | ||
| + | in the same style as the surrounding text; thus, within a theorem, | ||
| + | '' | ||
| + | be upright, like function words, '' | ||
| + | |||
| + | Basic TeX defined two-letter names for most font styles. | ||
| + | All of these are of the persistent type. They should be avoided | ||
| + | with LaTeX, as some of the LaTeX forms provide improvements, | ||
| + | such as a smoother transition between italic and upright type. | ||
| ==== Math ==== | ==== Math ==== | ||
| + | Math is always a scoped environment. If started, it must be ended | ||
| + | explicitly and unambiguously. Within text, math begins and ends with '' | ||
| + | with the '' | ||
| + | by the packages [[ctanpkg> | ||
| + | and it is worthwhile to learn them by reading the user guides. | ||
| + | Within math, all input spaces are meaningless to (La)TeX; | ||
| + | they can be entered in the source file as useful to make it readable | ||
| + | to a human. Blank lines, however, are considered errors. | ||
| + | In both in-text math and displays, the error message will be\\ | ||
| + | '' | ||
| + | This will also result if in-text math is not ended before the paragraph ends, | ||
| + | or if a math-only symbol or command is found outside of math mode. | ||
| + | If a blank line occurs in a multi-line display environment from [[ctanpkg> | ||
| + | '' | ||
| + | '' | ||
| + | ''< | ||
| + | This will be followed by many more error messages, all caused by the first. | ||
| + | These will be confusing and misleading. Always fix the problem identified | ||
| + | by the first error and ignore the rest; they will disappear once | ||
| + | the first error is fixed; here, by removing the blank line. | ||
| + | |||
| + | If the appearance of a blank line is wanted for readability, | ||
| + | instead use a line with just a '' | ||
| + | As with all environments, | ||
| + | the name specified at '' | ||
| + | unnumbered display is '' | ||
| + | for multi-line displays should not be used for a single-line display. | ||
| + | |||
| + | Although LaTeX provided '' | ||
| + | don’t use it. If the display is numbered and the equation is long, | ||
| + | the equation can be overprinted by the equation number | ||
| ==== Tables, figures, and other floats ==== | ==== Tables, figures, and other floats ==== | ||
| + | |||
| + | The allowed number of floats, their positions on a page, | ||
| + | and the spacing around and between them is defined | ||
| + | by the document class. So if something doesn’t work | ||
| + | as you expect (hope for?), any potential helper will insist | ||
| + | on learning what document class is being used. | ||
| + | |||
| + | Input for a float must appear in the source file while there is | ||
| + | still enough space on the output page to fit it in. | ||
| + | In particular, on two-column pages, a '' | ||
| + | must occur in the source before anything else is set on the page. | ||
| + | LaTeX’s core float handling does not allow full-width floats to be placed | ||
| + | anywhere but at the top of a page; some packages extend this capability, | ||
| + | but those won’t be discussed here. | ||
| + | |||
| + | Here are the defaults for the basic article class: | ||
| + | * Total number of floats allowed on a page with text: 3. | ||
| + | * Number of floats allowed at top of page: 2. Percentage of page allowed for top-of-page floats: 70%. | ||
| + | * Number of floats allowed at bottom of page: 1. Percentage of page allowed for bottom-of-page floats: 30%. | ||
| + | * Minimum height of page required for text: 20%. | ||
| + | * Minimum height of float requiring a page by itself: 50%. | ||
| + | The reference height is \textheight. That is, the height of page headers and footers is excluded. | ||
| + | |||
| + | If an insertion is small, must be placed precisely and fits in that location, | ||
| + | don’t use a float. '' | ||
| + | structures should be used directly, often wrapped in '' | ||
| + | |||
| + | The [[ctanpkg> | ||
| + | the sides of a page or column. Refer to the documentation for details. | ||
| + | |||
| + | By tradition, captions are applied at the top of tables and the bottom | ||
| + | of figures. If an insertion is not a float, the usual '' | ||
| + | can’t be used. Instead, '' | ||
| + | |||
| ==== The document class and preamble ==== | ==== The document class and preamble ==== | ||
| + | |||
| + | When embarking on a new document, start by choosing the document class. | ||
| + | If the goal is publication in a | ||
| + | particular journal, check the publisher’s instructions | ||
| + | to see what is required. Many popular journal classes | ||
| + | are available from [[https:// | ||
| + | |||
| + | If the project is a thesis or dissertation, | ||
| + | out the special requirements, | ||
| + | provides a tailored class, obtain a copy. Try to | ||
| + | determine whether it is actively maintained, and | ||
| + | if there is local support. Read the documentation. | ||
| + | |||
| + | It is the responsibility of the document class to | ||
| + | define the essential structure of the intended document. | ||
| + | If the document you are preparing differs in essential ways from what is supported by the document class, the time to get help is now. | ||
| + | |||
| + | There will be features not natively supported by | ||
| + | the document class; for example, the choice of how | ||
| + | to prepare a bibliography may be left to the author. | ||
| + | This is why packages have been created. | ||
| === Organizing your document === | === Organizing your document === | ||
| Ligne 229: | Ligne 758: | ||
| if options are needed, any loaded with a non-first | if options are needed, any loaded with a non-first | ||
| '' | '' | ||
| - | Some packages automatically load other packages; for example, | + | Some packages automatically load other packages; for example, |
| - | loads '' | + | loads [[ctanpkg> |
| - | very important, pay attention to the order of package | + | And, very important, pay attention to the order of package loading: |
| - | loading: | + | [[ctanpkg> |
| - | few packages that must come after '' | + | few packages that must come after [[ctanpkg> |
| well documented. | well documented. | ||
| Ligne 240: | Ligne 769: | ||
| ==== Processing the job ==== | ==== Processing the job ==== | ||
| + | Once the file is created, it’s time to produce output. | ||
| + | There are several engines to choose from: pdfLaTeX, XeLaTeX, and LuaLaTeX. | ||
| + | These can be run interactively from the command line, or initiated from | ||
| + | an editor. Assuming there are no errors, how many | ||
| + | times a document must be processed to produce the | ||
| + | final output depends on what features it contains. | ||
| + | |||
| + | In particular, if any cross-references or '' | ||
| + | are present, this information is written out to an | ||
| + | '' | ||
| + | to a '' | ||
| + | The bibliography must be processed by a separate | ||
| + | program (and its log checked for errors) with the | ||
| + | reformatted bib data written out to yet another file. | ||
| + | Then LaTeX must be run (at least) twice more --- once | ||
| + | to read in the '' | ||
| + | the bibliography and resolved cross-references, | ||
| + | and the second time to resolve the correct page num- | ||
| + | bers (which will change when the TOC and similar | ||
| + | bits are added at the beginning). | ||
| + | |||
| + | All this assumes that there are no errors. Errors | ||
| + | will be recorded in the log file. Learn where the log | ||
| + | file is located, and make a habit of referring to it. | ||
| + | Warnings, such as those for missing characters, will | ||
| + | also be recorded there, but may not be shown online:\\ | ||
| + | '' | ||
| + | '' | ||
| + | |||
| + | In the log, some errors may appear with closely | ||
| + | grouped line numbers. If so, and the first is one | ||
| + | that interrupts the orderly processing of a scoped | ||
| + | environment, | ||
| + | fix the first error and try processing before trying to | ||
| + | understand the others; often, they may just go away. | ||
| + | |||
| + | Good luck. With practice comes understanding. | ||
| + | Oh... **Remember to read the documentation.** | ||
| ----- | ----- | ||

