Ceci est une ancienne révision du document !
Quelles erreurs de débutant dois-je éviter?
Abstract
LaTeX has a reputation for producing excellent re- sults, but at the cost of a steep learning curve. That’s true, but by understanding a few basic principles, and learning how to avoid some techniques that may seem obvious but often lead one into the weeds, it’s possible to avoid some of that pain. Our goal here is to encourage good habits before bad habits have had a chance to develop.
Introduction
The examples presented here are drawn from two main sources:
- 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 has provided a surfeit of questions both basic and advanced. A community effort has collected a list of “Often referenced questions”, by topic, at
tex.meta.stackexchange.com/q/2419.
Vocabulary
There are several concepts that seem to be either missing from a new user’s bag of tricks, or not clearly understood. Let’s get them out of the way up front.
Template
Many new (La)TeX users think that the
document class is the template for a particular style
or publication. Not so, although the thought is going
in the right direction. A template is a source (.tex
)
file that is an outline. It begins with \documentclass
and contains a minimum of basic structural commands
into which additional definitions and text can
be inserted as appropriate. Ideally, the template
itself can be compiled with no errors resulting, but
without producing any useful output.
Command line
Most new users these days enter (La)TeX from an editor or other GUI, and launch a non-interactive job that will blithely keep on process- ing the file until it finishes (with or without errors) or hangs in a loop. Launching the compilation from the command line, on the other hand, allows one to interact with the session and, in certain cases, make corrections “on the fly”, or if that’s not possible, halt 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. l.37 \scetion {Section} ?
Respond to this with the correct spelling;
i\section
hit “return”, and continue; don’t forget to correct the file when you come to a good stopping point. A misspelled environment name can’t be cor- rected this way; if that happens, cancel the job with an x, fix the file, and start over. Continuing a run after an unfixable error will just result in more er- ror messages, most of which are meaningless and confusing, so it’s best to avoid them.
Log file
Every time a TEX job runs, it will create a log file. Learn where to find this file! In addition to errors and warnings, it will report all files that were read in, including version numbers for document class files and packages, pages processed, and, at the end, resources used. Only a few relevant items will be mentioned here, but in a paper based on an earlier talk, instructions are given for how to undertake serious debugging.
Conventions
In order to avoid overfull lines, error and warning messages shown here may be broken to fit the narrow columns of the TUGboat style. Many error messages output by LaTeX will consist of several lines, the first being the message, and the next showing the number of the line on which the error is identified along with the content of that line, up through the error text. A following line, indented so that it, with the numbered line, completes the line as it appears in the input.
Although we will deal here mostly with details, please remember that the basic concept of LaTeX is to separate content from structure.
Basic structure
Commands, modes, and scope
Here we deal with some fundamentals of LaTeX.
Commands
Instructions are given to (La)TeX by
means of commands, or “control sequences”, which by
default begin with a backslash (\
). There are two varieties:
those which consist of the backslash followed
by one non-letter character (“control symbol”), and
those of one or more letters (“control words”) in which
only letters (upper- or lowercase A–Z) are permitted
(no digits or special characters). A control word may
have one or more arguments (\title{…}
) or stand
by itself (\alpha
). A “standalone” control word will
be terminated by a space or any other non-letter.
But a space after a control symbol will appear as
a space in the output. Several control symbols are
predefined to produce their own character in the
output: \#
, \%
, \$
, \&
.
For example, \$
produces .
A user can define new commands, or assign new meanings to existing commands.
LaTeX provides \newcommand
to create a brand-new definition.
\newcommand checks to make sure that the command
name hasn’t been used before, and complains if it has.
(The basic TeX \def
does not.) If it’s necessary to
redefine a command that already exists, the recommended way is to use \renewcommand
— but be sure
you know what you’re doing. For example, redefining
\par
is chancy, as LaTeX uses this “under the covers”
for many different formatting adjustments, and it’s
very easy to mess things up.
Single-letter commands are also bad candidates
for (re)definition by users, as many of them are predefined
as accents or forms of letters not usual in English text;
\i
might very well occur with (or without)
an accent in a references list. For (a bad) example,
consider the author Haïm Brezis:
\renewcommand{\i}{\ensuremath{\sqrt{-1}}} Brezis, Ha\"{\i}m
Single-digit commands (\0
, \1
, etc.) are not
predefined in core LaTeX, so are available for ad hoc use
Environments
Modes
Scope
Spacing in text
Spurious spaces
Sometimes using a % is a bad idea
Remember that a space terminates a control word and it’s then
discarded; that’s one place where it’s not necessary
to input a %
. But there are places where adding a %
can really cause trouble.
After defining any numeric value, TeX will keep
looking for anything else that can be interpreted as
numeric, so if a line ends with \xyz=123
, no %
should
be added. Or, if setting a rubber length (glue), say
\parskip=2pc
, TeX will keep looking for plus or
minus; a better “stopper” is an empty token, {}
.
(If “plus” or “minus” is there and happens to be actual
text, a confusing error message will be produced, but
that is rare, and beyond the scope of this discussion
Really unexpected extra spaces
Paragraph endings and vertical mode
The double backslash
Font changee
Math
Tables, figures, and other floats
The document class and preamble
Organizing your document
Most packages are loaded in the preamble. There is one exception:
\RequirePackage
. This is usually specified before \documentclass
,
and is the place where certain special options should be loaded.
Some authors create a preamble that is suitable for one document, then use the same preamble for their next document, adding more packages as they go. And some unwitting newbies “adopt” such second- hand “templates” without understanding how they were created. Don’t do it!
Start with a suitable document class and add
features (packages, options, and definitions) as they
become necessary. Organize the loading of packages
into logical groups (all fonts together, for example),
and be careful not to load a package more than once;
if options are needed, any loaded with a non-first
\usepackage
will be ignored.
Some packages automatically load other packages; for example, mathtools
loads amsmath
and amssymb
loads amsfonts
. And,
very important, pay attention to the order of package
loading: hyperref
must be loaded (almost) last; the
few packages that must come after hyperref
are all
well documented.
Read the documentation.