TeX Frequently Asked Questions - Section 15

Go to the first, previous, next, last section, table of contents.

# Things are Going Wrong...

## Weird hyphenation of words

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.

## (Merely) peculiar hyphenation

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`

## Accented words aren't hyphenated

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.

## Enlarging TeX

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.

## Moving tables and figures in LaTeX

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).

- Are the placement parameters on your figures right? The default (`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.
- Can you perhaps prevent your figures from floating by adjusting LaTeX's placement parameters? Again, the defaults are reasonable, but can be overridden in case of problems. The parameters are described on pages 199-200, section C.9 of the LaTeX manual.
- Are there places in your document where you could `naturally' put a `\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.)
- Have a look at the LaTeX2e `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).
- As a last resort, try the package `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.
- If you actually wanted all your figures to float to the end (e.g., for submitting a draft copy of a paper), don't rely on LaTeX's mechanism: get the package `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:

- Put `\thispagestyle{empty}` immediately after the `\maketitle` command, with no blank line between them.
- Use `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`
- Use `nopageno.sty`, which suppresses this behaviour. It is available in `macros/latex/contrib/supported/carlisle/nopageno.sty`

## Underlined text won't break

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.)

## Odd behaviour of `\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.

## Old LaTeX font references such as `\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).

## Missing symbols

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.

## LaTeX gets cross-references wrong

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

## Where are the `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`

## Where are the `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.

## `String too long' in BibTeX

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

- change its first line (line 60 in the version on CTAN) from `"{ 's :="` to `"{ swap$"`, and
- delete its last line, which just says `"s"` (line 84 in the version on CTAN).

Finally, change your `\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.

Go to the first, previous, next, last section, table of contents.