Book review: LaTeX and Friends

It is difficult to write a new and original introductory
book about LaTeX today. The author must compete
with a number of great books, including freely
available ones like [1]. Some these books were
written by the authors or primary developers of
the language [2, 3, 4, 5]. Still, people have been
writing mathematics textbooks for several thousand
years, and nevertheless new ones continue to be
written.

The way one can judge introductory LaTeX textbooks
is similar to how figure skating is judged. There are
several “required elements” which must be present in
any book, like the explanation of LaTeX macros and
workflow. There are also several “free elements” like
additional packages or tricks the author chooses to
include. The book can be evaluated by the pedagogical
skill with which the author performed the “required
elements”, introducing the fundamentals of LaTeX, and
by his choice of the “free” ones.

The new book by Marc van Dongen deserves high
scores in both categories.

The first two parts of the book, Basics and BasicTypesetting discuss the material one can expect to find
in any LaTeX textbook: the organization of LaTeX
documents, the language constructs, the alphabet,
etc. They are explained lucidly and well. What
distinguishes this book from many other texts is
that the author stresses the fact that LaTeX is a
programming language, and therefore a LaTeX file is
actually a program that instructs the computer to
create the final product: the typeset pages on paper or
on screen. This means, writes the author, that you canuse software engineering techniques such as top-downdesign and stepwise refinement.

This is a very important fact, which must be explained
to the students of TeX and LaTeX, especially those
who are accustomed to WYSIWYG documents. A
WYSIWYG document presents itself as “the final
product” (this is a deception of sorts because, as any
experienced user can attest, “what you finally get” is
emphatically not “what you see”), while a TeX
document is best viewed as a program to produce “the
final product”. The author returns to this many times,
discussing such software engineering concepts as maintainability applied to TeX documents. This
approach would likely be very comfortable and familiar
for engineers and software developers.

The author’s use of Unix-like syntax for his examples
adds to the impression that the target audience of the
book is the people who are not afraid of compilers
and can write some code. This is a very welcome
development. Too often publishers prefer to print
computer-related books intended for “dummies” or
even “complete idiots”. While geniuses arguably do not
need introductory texts, there is a perceptible dearth of
books for the reasonably intelligent person. LaTeX andFriends is definitely one of such books, and it makes for
pleasant and useful reading.

Since The TeXbook [6], many books about TeX
discuss not only the typesetting program, but also
other aspects of typographic art and science, discussing
the rules for book design and the best practices. LaTeXand Friends follows this tradition, and Bringhurst’s
immortal Elements [7] is one of the most often cited
books in the text. The reader learns many useful
typographic facts, such as setting the punctuation
symbols at the border of two types in the brighter type,
the spacing in abbreviations and initials, etc. Many
people from the intended audience get their first
exposure to the typography from TeX-related books,
and this one provides a good introduction to the
subject.

The author chooses PDF mode as the main way
to produce the result—probably a sensible choice
nowadays. He does discuss DVI mode as a quick way to
get a preview of the typeset pages. He obviously prefers
biblatex to the “traditional” BibTeX interface to the
bibliography. Still, a description of the natbib package
would be a useful addition to the discussion of the
author–year bibliographies.

The third part of the book discusses Tables, Diagramsand Data Plots. It contains a detailed introduction to
the TikZ suite—probably one of the best existing
descriptions of this highly useful package. This
description alone makes the book worth buying. The
section on tables, however, is smaller and less detailed;
the reader who needs more should probably turn to
the recent book by Herbert Voß [8] dedicated to
typesetting tables in LaTeX.

The fourth part of the books is called Mathematicsand Algorithms. The author discusses the use of
amsmath and the related packages from the American
Mathematical Society. Again, a reader who needs a
detailed description of these packages may want
to consult the books which deal with them as a
primary topic, such as the two volumes by George
Grätzer [9, 10]. A chapter or two in a general
textbook, of course, cannot be a comprehensive
description of these large packages. One can always
argue with the author’s choice: for example, van
Dongen discusses the split environment, but does not
mention multline, while I find the latter more useful
than the former. I also would argue that the only
“discussion” of eqnarray environment should be the
warning: “never use this ugly monster!” A stranger
omission happens in the discussion of variable sized
delimiters, where the author explains the usage of
\left and \right keywords for automatic sizing (with
a useful trick of \vphantom for the proper sizing of
multi-line expressions), but does not mention the
manual sizing with \Biggl, \Bigl, \bigl commands
and their “right” complements. The description of the
listings package is rather short and does not mention
many of its useful features. On the other hand, the
discussion of the algorithm2e package is very detailed
and well written.

The fifth part of the book, Automation, deals with the
definition of new macros. It is probably intended for a
more advanced reader than the rest of the book. The
discussion of branching, loops and switching there
is rather interesting, as well as containing some
introductory remarks on the TeX interface (as opposed
to the LaTeX interface).

The last part, Miscellany, includes a couple of chapters
on various topics that do not fit into the other parts. It
has a short but well written introduction to beamer
presentations, a chapter on writing classes and
packages, and a chapter on using OpenType fonts. The
chapter on writing classes and packages is probably
not as good as the famous guide [11], and does
not cover the use of .dtx file for self-documenting
code. The chapter on OpenType fonts contains an
interesting discussion of a more esoteric topic. I wonder
whether some script to automate this, e.g., using
fontinst [12, 13] for some parts of the process, would
help.

The book is well typeset using the FF Nexus font
family. Unlike many other books on TeX, it has a
detailed colophon, adding to the pedagogical value of
the book. It has a good index separated into categories,
and a short dictionary of typographic jargon.

This is a very useful book which can be recommended
as a textbook on LaTeX for an introductory course or
for self-education. It has chapters interesting for
beginners and for experienced TeXnicians, and will be a
welcome addition to either bookshelf.