You may have a version mismatch problem. TeX's hyphenation system changed
between version 2.9 and 3.0. If you are using (plain
) TeX
version 3.0 or later, make sure your plain.tex
file has a
version number which is at least 3.0. If you are using LaTeX 2.09 you
should consider upgrading to LaTeX2e; if for some reason you can't, the
last version of LaTeX 2.09, released on 25 March 1992, is available
(for the time being at least) from obsolete/macros/latex209/distribs/latex209.tar
and ought
to solve this problem.
If you're using LaTeX2e, the problem probably arises from your
hyphen.cfg
file, which has to be created if you're using a
multi-lingual version.
For the curious, here's what happened:
before TeX 3.0 the hyphenation algorithm would not
break a word if the part before the break was not at least two
characters long, and the part after the break at least three
characters long. Starting with version 3.0 the parameters
\lefthyphenmin
and \righthyphenmin
control the length of these
fragments. These are set to 2 and 3, respectively, in the new
plain
and lplain
formats. They can be set to any value, of course,
but if \lefthyphenmin
+\righthyphenmin
is greater than 62, all
hyphenation is suppressed.
A further source of oddity can derive from the 1995 release of Cork-encoded fonts, which introduced an alternative hyphen character. The LaTeX2e configuration files in the font release specified use of the alternative hyphen, and this could produce odd effects with words containing an explicit hyphen. The font configuration files in the December 1995 release of LaTeX2e do not use the alternative hyphen character, thus removing this source of problems.
You may have found that TeX's famed automatic word-division does
not produce the break-points recommended by your dictionary. This may be
because TeX is set up for American English, whose rules for word
division (as specified, for example, in Webster's Dictionary) are
completely different from the British ones (as specified, for example,
in the Oxford Dictionaries). This problem is being addressed by the UK
TeX User community (see Baskerville, issue 4.4) but an entirely
satisfactory solution will take time. An interim hyphenation file is
available in language/hyphenation/ukhyphen.tex
TeX's algorithm for hyphenation gives up when it encounters an
\accent
command; there are good reasons for this, but it means
that quality typesetting in non-English languages can be difficult.
For TeX itself, avoiding this effect means using Cork-encoded fonts (the EC fonts) which contain accented letters as single glyphs. In the future, perhaps, Omega will provide a rather different solution.
People sometimes get messages saying `memory capacity exceeded'.
Most of the time this error can be fixed
without enlarging TeX. The most common causes are unmatched braces,
extra-long lines, and poorly-written macros. Extra-long lines are
often introduced when files are transferred incorrectly between
operating systems, and line-endings are not preserved properly (the
tell-tale sign of an extra-long line error is the complaint
that the `buf_size
' has overflowed).
If you really need to extend your TeX's capacity, the proper method depends on your installation. In the purest form, you change the parameters in module 11 of the WEB source. In less pure forms, you might need to modify a change file, or perhaps change some environment variables; emTeX allows you to adjust the memory allocation criteria on the command line. Consult the documentation that came with your implementation.
Tables and figures have a tendency to surprise, by floating
away from where they were specified to appear. This is in fact
perfectly ordinary document design; any professional typesetting
package will float figures and tables to where they'll fit without
violating the certain typographic rules. Even if you use the
placement specifier h
for `here', the figure or table will not be
printed `here' if doing so would break the rules; the rules themselves
are pretty simple, and are given on page 198, section C.9 of the
LaTeX manual. In the worst case, LaTeX's rules can cause the
floating items to pile up to the extent that you get an error message
saying ``Too many unprocessed floats''; this means that the limited
set of registers in which LaTeX stores floating items is full.
What follows is a simple checklist of things to do to solve these
problems (the checklist talks throughout about figures, but applies
equally well to tables).
tbp
) is reasonable; you should never simply say `h
',
for example, since that says ``if it can't go here, it can't go
anywhere'', and as a result all subsequent floats pile up behind it.
\clearpage
command? If so, do: the backlog of floats is
cleared after a \clearpage
. (Note that the \chapter
command implicitly executes \clearpage
, so you can't float past
the end of a chapter.)
afterpage
package (part of
macros/latex/required/tools
). Its documentation gives as an example the idea
of putting \clearpage
after the current page (where it
will clear the backlog, but not cause an ugly gap in your text), but
also admits that the package is somewhat fragile (though it's improving).
macros/latex209/contrib/misc/morefloats.sty
; this
`simply' increases the number of floating inserts that LaTeX can
handle at one time (from 18 to 36), but that may suit your needs.
macros/latex/contrib/supported/endfloat
to do
the job for you.
\pagestyle{empty}
on first page in LaTeX
If you use \pagestyle{empty}
, but the first page is numbered anyway,
you are probably using the \maketitle
command too. This is not a bug
but a feature! The standard LaTeX styles are written so that
initial pages (pages containing a \maketitle
, \part
, or
\chapter
) have a different page style from the rest of the document;
Hence, the commands internally issue \thispagestyle{plain}
. This is
usually not acceptable behaviour if the surrounding page style is
`empty'.
Possible workarounds include:
\thispagestyle{empty}
immediately after the \maketitle
command, with no blank line between them.
fancyhdr.sty
, which allows you to customise the
style for initial pages independently of that for body pages. It is
available in macros/latex/contrib/supported/fancyhdr
nopageno.sty
, which suppresses this behaviour. It is
available in macros/latex/contrib/supported/carlisle/nopageno.sty
Knuth made no provision for underlining text: he took the view that
underlining is not a typesetting operation, but rather one that
provides emphasis on typewriters, which typically offer but one
typeface. The corresponding technique in typeset text is to switch
from upright to italic text (or vice-versa): the LaTeX command
\emph
does just that to its argument.
Nevertheless, typographically illiterate people (such as those that
specify double-spaced
thesis styles)
continue to require underlining of us, so LaTeX as distributed
defines an \underline
command that applies the mathematical
`underbar' operation to text. This technique is not entirely
satisfactory, however: the text gets stuck into a box, and won't break
at line end.
The solution is the package macros/latex/contrib/other/misc/ulem.sty
, which redefines the
\emph
command to underline its argument; the underlined text thus
produced behaves as ordinary emphasised text, and will break over the
end of a line. (The package is capable of other peculiar effects,
too: read its documentation, contained within the file itself.)
\rm
, \bf
, etc.
If commands such as \rm
and \bf
have suddenly stopped working in
LaTeX in the way that you expect, it is likely that your system
administrator has installed a version of LaTeX 2.09 with a prototype
version of the NFSS
(now part of LaTeX2e).
Complain loudly; ask
your system administrator to replace this version with
LaTeX2e,
in which commands such as \rm
and \bf
work just as before if you
are using one of the standard classes -article
, report
and book
(among others). In the meantime, use the option
oldlfont.sty
, which should have been installed at the same time
as NFSS.
\tenrm
LaTeX 2.09 defined a large set of commands for access to the fonts
that it had built in to itself. For example, various flavours of
cmr
could be found as \fivrm
, \sixrm
, \sevrm
,
\egtrm
, \ninrm
, \tenrm
, \elvrm
, \twlrm
,
\frtnrm
, \svtnrm
, \twtyrm
and \twfvrm
.
These commands were never documented, but certain packages
nevertheless used them to achieve effects they needed.
Since the commands weren't public, they weren't included in LaTeX2e;
to use the unconverted LaTeX 2.09 packages under LaTeX2e, you need
also to include the package rawfonts.sty
(which is part of the
LaTeX2e distribution).
If some symbols, such as \Box
and \lhd
, no longer appear to
exist, then your system administrator has probably upgraded your
version of LaTeX to either use the prototype NFSS or
LaTeX2e.
In the former case, use
oldlfont.sty
(see problems with \rm
, etc.).
In the latter, use the package latexsym
, which is part of the
LaTeX2e distribution, or the package amsfonts
, if
it is available.
Sometimes, however many times you run LaTeX, the cross-references
are just wrong. Remember that
the \label
command must come after the \caption
command, or
be part of it. For example,
\begin{figure} \begin{figure} \caption{A Figure} or \caption{A Figure% \label{fig} \label{fig}} \end{figure} \end{figure}
\@
and @
in macro names
A common source of problems in a LaTeX document is the diagnostic
about the appearance of the command \@
, or about other commands
containing the character @
. The most common complaint is ``You
can't use `\spacefactor
' in vertical mode'', but others occur.
Such problems are usually caused by including a LaTeX2e class or
package file into a LaTeX document by some means other than
\documentclass
or \usepackage
. LaTeX defines internal
commands whose names contain the character @
; this enables it to
avoid clashes between its internal names and names that we would
normally use in our documents. In order that these commands may work
at all, \documentclass
and \usepackage
play around with the
meaning of @
. Solve this problem by using the correct command to
include the file.
But, you will say, ``The LaTeX Companion tells me to use
commands containing @
!''
Indeed; for example, there's a lengthy section about
\@startsection
and how to use it to control the appearance of
section titles. Page 15 of The Companion explains this; and
suggests that you make such changes in the document preamble, between
\makeatletter
and \makeatother
. So the definition of
\subsection
on page 26 could be:
\makeatletter \renewcommand{\subsection}{\@startsection {subsection}% % name ... {\normalfont\normalsize\itshape}}% style \makeatother
msx
and msy
fonts?
The msx
and msy
fonts were designed by the American Mathematical
Society in the very early days of TeX, for use in typesetting
papers for mathematical journals. They were designed using the `old'
METAFONT, which wasn't portable and is no longer available; for a long
time they were only available in 300dpi versions which only
imperfectly matched modern printers. The AMS has now redesigned the
fonts, using the current version of METAFONT, and the new versions are
called the msa
and msb
families; they are available from
fonts/ams/amsfonts/sources/symbols
Nevertheless, msx
and msy
continue to turn up to plague us. There
are, of course, still sites that haven't got around to upgrading; but,
even if everyone upgraded, there would still be the problem of old
documents that specify them.
If you have a .tex
source that requests msx
and msy
, the best
technique is to edit it so that it requests msa
and msb
(you only
need to change the single letter in the font names).
If you have a DVI file that requests the fonts, there is a package
of
virtual fonts
to map the old to the new series; it's available in fonts/vf-files/msx2msa
am
fonts?
One still occasionally comes across a request for the am
series of fonts. The initials stood for `Almost [Computer] Modern',
and they were the predecessors of the Computer Modern fonts that we
all know and love (or hate).
There's not a lot one can do with these
fonts; they are (as their name implies) almost (but not quite) the
same as the cm
series; if you're faced with a document that requests
them, all you can reasonably do is to edit the document. The
appearance of DVI files that request them is sufficiently rare that
no-one has undertaken the mammoth task of creating a translation of
them by means of virtual fonts; however, most drivers let you have a
configuration file in which you can specify font substitutions. If you
specify that every am
font should be replaced by its corresponding
cm
font, the output should be almost correct.
The BibTeX diagnostic ``Warning-you've exceeded 1000, the
global-string-size
, for entry foo
'' usually arises from a very
large abstract or annotation included in the database. The diagnostic
usually arises because of an infelicity in the coding of
abstract.bst
, or styles derived from it. (One doesn't
ordinarily output annotations in other styles.)
The solution is to make a copy of the style file (or get a clean copy
from CTAN - biblio/bibtex/contrib/abstract.bst
), and rename it (e.g., on a
long file-name system to abstract-long.bst
). Now edit it: find
function output.nonnull
and
"{ 's :="
to "{ swap$"
, and
"s"
(line 84 in the
version on CTAN).
\bibliographystyle
command to refer to the
name of the new file.
This technique applies equally to any bibliography style: the same
change can be made to any similar output.nonnull
function.
If you're reluctant to make this sort of change, the only way forward is to take the entry out of the database, so that you don't encounter BibTeX's limit, but you may need to retain the entry because it will be included in the typeset document. In such cases, put the body of the entry in a separate file:
@article{long.boring, author = "Fred Verbose", ... abstract = "{\input{abstracts/long.tex}}" }
In this way, you arrange that all BibTeX has to deal with is the file name, though it will tell TeX (when appropriate) to include all the long text.