Frequently Asked Question List for TeX
\bf
, \it
, etc.?
The font-selection commands of LaTeX 2.09 were \rm
, \sf
,
\tt
, \it
, \sl
, \em
and \bf
; they were modal
commands, so you used them as:
{\bf Fred} was {\it here\/}.
with the font change enclosed in a group, so as to limit its effect;
note the italic correction command \/
that was necessary at the
end of a section in italics.
At the release of LaTeX2e in summer 1994, these simple commands were
deprecated, but recognising that their use is deeply embedded in the
brains of LaTeX users, the commands themselves remain in LaTeX,
with their LaTeX 2.09 semantics. Those semantics were part of
the reason they were deprecated: each _xx_
overrides
any other font settings, keeping only the size. So, for example,
{\bf\it Here we are again\/}
ignores \bf
and produces text in italic, medium weight (and the
italic correction has a real effect), whereas
{\it\bf happy as can be\/}
ignores \it
and produces upright text at bold weight (and the
italic correction has nothing to do). The same holds if you mix
LaTeX2e font selections with the old style commands:
\textbf{\tt all good friends}
ignores the \textbf
that encloses the text, and produces
typewriter text at medium weight.
So why are these commands deprecated? — it is because of confusions such as that in the last example. The alternative (LaTeX2e) commands are discussed in the rest of this answer.
LaTeX2e’s font commands come in two forms: modal commands and
text-block commands. The default set of modal commands offers weights
\mdseries
and \bfseries
, shapes \upshape
,
\itshape
, \scshape
and \slshape
, and families
\rmfamily
, \sffamily
and \ttfamily
. A font selection
requires a family, a shape and a series (as well as a size, of
course). A few examples
{\bfseries\ttfamily and jolly good company!}
produces bold typewriter text (but note the lack of a bold typewriter font in the default Computer Modern fonts), or
{\slshape\sffamily Never mind the weather\/}
(note the italic correction needed on slanted fonts, too).
LaTeX2e’s text block commands take the first two letters of the
modal commands, and form a \text
xx
command from
them. Thus \bfseries
becomes \textbf{text}
,
\itshape
becomes \textit{text}
, and \ttfamily
becomes \texttt{text}
. Block commands may be nested, as:
\textit{\textbf{Never mind the rain}}
to produce bold italic text (note that the block commands supply italic corrections where necessary), and they be nested with the LaTeX2e modal commands, too:
\texttt{\bfseries So long as we're together}
for bold typewriter, or
{\slshape \textbf{Whoops! she goes again}\/}
for a bold slanted instance of the current family (note the italic correction applied at the end of the modal command group, again).
The new commands (as noted above) override commands of the same type.
In almost all cases, this merely excludes ludicrous ideas such as
“upright slanted” fonts, or “teletype roman” fonts. There are a
couple of immediate oddities, though. The first is the conflict
between \itshape
(or \slshape
) and \scshape
: while many
claim that an italic small-caps font is typographically unsound, such
fonts do exist. Daniel Taupin’s smallcap
package enables
use of the instances in the EC fonts, and
similar techniques could be brought to bear on many other font sets.
The second is the conflict between \upshape
and \itshape
:
Knuth actually offers an upright-italic font which LaTeX uses for
the “£” symbol in the default font set. The combination is
sufficiently weird that, while there’s a defined font shape, no
default LaTeX commands exist; to use the shape, the (eccentric) user
needs LaTeX’s simplest font selection commands:
{\fontshape{ui}\selectfont Tra la la, di dee}
FAQ ID: Q-2letterfontcmd