Roman, bold, italic — the commands that switch fonts in LaTeX look like a grab-bag at first, but they actually sit neatly on three independent axes. Once the model clicks, combinations like “bold sans-serif” and switching a whole paragraph at once become obvious rather than fiddly. This page covers that model, and the choice between the command form \textbf{...} and the declaration form {\bfseries ...}.
A font is three independent axes
In LaTeX2e’s NFSS (New Font Selection Scheme), the current text font is the combination of three independent attributes. Family is the underlying letterform, series is the weight, and shape is the slant or form of the letters. The key point is that each can be switched on its own, and they compose: set the family to sans-serif and the series to bold, and you get bold sans-serif.
- Family — roman (serif)
\textrm/\rmfamily, sans-serif\textsf/\sffamily, typewriter (monospaced)\texttt/\ttfamily. - Series — medium (the default weight)
\textmd/\mdseries, bold\textbf/\bfseries. - Shape — upright (the default)
\textup/\upshape, italic\textit/\itshape, slanted\textsl/\slshape, small caps\textsc/\scshape.
Switching one axis leaves the other two untouched — this is the orthogonality at the heart of NFSS. So if you turn on sans-serif with \textsf and then use \textbf inside it, you get bold *and still sans-serif*. Note that series really combines “weight” and “width” into one axis, so it also covers condensed and extended faces. Since 2020, LaTeX2e merges the current and requested series intelligently: if the font is currently condensed (c) and you ask for bold (b), it will try bold-condensed (bc) when that face exists.
Command form vs declaration form
Each switch comes in two forms. The command form, beginning with \text…, takes an argument and affects only what is inside its braces. The declaration form, ending in …family / …series / …shape, takes no argument and stays in effect from that point until the end of the enclosing group ({ }) or environment.
% 命令形:短い範囲に / Command form: for short spans
ここは \textbf{太字} で、ここは \textit{イタリック} です。
% 宣言形:グループで範囲を区切る / Declaration form: a group limits the scope
ここは普通。{\bfseries ここから先はずっと太字。} ここで元に戻る。
% 環境全体に効かせる / Apply to a whole environment
\begin{quote}
\itshape この引用は段落全体がイタリックになります。
\end{quote}A good rule of thumb: for a short span of up to a few words, use the command form \textbf{...}; for a whole paragraph or environment, use the declaration form \bfseries. When you want a declaration to apply only locally, remember to wrap it in a group — {\bfseries ...} — otherwise it keeps going for the rest of the document.
The command form also has a quiet but real advantage: it inserts italic correction for you (see the next section). The declaration form, by adding nothing, keeps nesting and bulk application predictable, which is why it is preferred inside class and package code.
| Key | Axis / effect | Command form (short span) | Declaration form (scope via group) |
|---|---|---|---|
roman | Family: roman (serif) | \textrm{...} | {\rmfamily ...} |
sans | Family: sans-serif | \textsf{...} | {\sffamily ...} |
tt | Family: typewriter (monospaced) | \texttt{...} | {\ttfamily ...} |
bold | Series: bold | \textbf{...} | {\bfseries ...} |
medium | Series: medium (default) | \textmd{...} | {\mdseries ...} |
italic | Shape: italic | \textit{...} | {\itshape ...} |
slanted | Shape: slanted | \textsl{...} | {\slshape ...} |
smallcaps | Shape: small caps | \textsc{...} | {\scshape ...} |
reset | Reset all axes to the default | \textnormal{...} | {\normalfont ...} |
Resetting, and italic correction
To reset all three axes to the document default at once, use \textnormal{...} (command form) or \normalfont (declaration form) — handy when you want a single word in the default font inside a sans-serif heading, say. To reset just one axis, use that axis’s default command: \mdseries (back to medium weight), \upshape (back to upright), or \rmfamily (back to roman).
Italic correction \/ adds a sliver of space to make up for the overhang of a sloped letter, so the last italic character does not crash into the upright text that follows. This is where the two forms diverge. The command forms such as \textit{...} insert the correction automatically when needed (they skip it if the next character is in \nocorrlist — by default a period or comma). The declaration form \itshape does nothing, so you must add \/ yourself at the end of the sloped span.
% 命令形:補正は自動 / Command form: correction is automatic
He was \textit{very} clever.
% 宣言形:末尾に \/ を手で入れる / Declaration form: add \/ by hand
He was {\itshape very\/} clever.
% 自動挿入を止めたいとき / To suppress the automatic correction
\textit{\nocorr text}For emphasis, use \emph (not \textit)
When your intent is “emphasize this,” the idiom is not the appearance-fixing \textit but the meaning-carrying \emph{...}. The trick is that \emph is context-aware: in upright body text it italicizes, but used inside already-italic text it switches *back to upright* to stand out. Nested, it alternates — \emph{start \emph{middle} end} gives italic, then upright, then italic.
This embodies LaTeX’s separation of structure from appearance: write only the *meaning* “emphasis” in the body, and if you later want emphasis rendered as bold or in color, you change the definition of \emph in one place (e.g. via \DeclareTextFontCommand) and it propagates everywhere. The dedicated page covers emphasis in more depth.
The old commands to avoid
You may see the two-letter commands \bf, \it, \rm, \sf, \tt, \sc, \sl in old web posts, but these are relics of LaTeX 2.09 (pre-1994). They still work, but do not use them. The reason is that they are not orthogonal: each one discards *every* current font attribute except the size and overrides it.
So they refuse to combine. {\bf\it text} ignores \bf and comes out italic only; {\it\bf text} ignores \it and comes out upright bold; and mixing old with new, \textbf{\tt text} silently drops the \textbf. LaTeX2e replaced them in 1994 with the per-axis, composable commands — \bfseries, \itshape, \rmfamily, and their \textbf{...}-style partners. Always use the modern commands in new code.
Combining the axes: a worked example
Because the three axes are independent, you can stack them freely. The example below applies sans-serif, bold, and italic all at once — nest the command forms, or simply list the declarations in the same group.
\documentclass{article}
\begin{document}
% 命令形を入れ子に / Nest the command forms
\textsf{\textbf{\textit{Bold sans-serif italic}}}
% 宣言形を同じグループに並べる(等価)/ Declarations in one group (equivalent)
{\sffamily\bfseries\itshape Bold sans-serif italic\/}
% 一語だけ標準書体へ戻す / Reset one word to the default font
{\sffamily 見出し調のテキストの中の \textnormal{標準} という語}
\end{document}Japanese (和文) text works a little differently. Its family axis has two members — mincho \textmc / \mcfamily and gothic \textgt / \gtfamily — a separate system from the Western roman/sans-serif. Because the default Japanese font has no independent bold series, applying \textbf to Japanese text makes the Western letters bold but renders the Japanese in gothic as a stand-in (the default behavior). Emphasizing Japanese by switching family (mincho ↔ gothic) is the traditional approach, conceptually different from the Western idea of weight and slant.
A closing note: high-level commands like \textbf expand internally into NFSS low-level commands — \fontfamily{...}, \fontseries{...}, \fontshape{...} set the attributes and \selectfont commits them. The shape attribute values are n (upright), it (italic), sl (slanted), and sc (small caps). You rarely touch this layer directly, but it is how you summon a specific named font.
A working policy for manuscripts
In a thesis or technical document, the more you scatter font commands as little visual fixes, the harder the manuscript is to maintain. In body text, keep font commands for places where they carry meaning. Rules such as making headings bold, captions smaller, or defined terms consistently sans-serif should live in the class, a package, or your own semantic macro, not in repeated \textbf commands throughout the prose.
- Leave emphasis to
\emph. Keep the meaning in the body so the appearance can change later. - Use direct styling only for short labels. Commands such as
\textsfor\textttare appropriate for UI names, key names, and short warning labels where the look itself matters. - Use declarations for long spans. For a whole quotation or marginal note, declare
\itshapeor\smallat the start of the environment and close the group cleanly. - Do not mix in old two-letter commands. In collaborative manuscripts, replace
\bfor\itwith modern\bfseries/\itshapeor\textbf/\textit.
Read font warnings in the log
If the requested combination does not exist in the current font, LaTeX substitutes a nearby font and keeps going. That is convenient, but in a submitted PDF it can mean “I asked for bold small caps, yet it looks like ordinary bold.” When the log says Font shape ... undefined or Font shape ... substituted, do not only check the spelling of the command; check whether the chosen font actually has that family, series, and shape. Even when a substitution is acceptable, inspect it in the PDF and record the decision in the manuscript notes.
- Try combinations in a minimal example. Before scattering them through the manuscript, inspect
\textsf{\textbf{...}}or\textsc{...}in a short sample. - Do not ignore substitutions. Left alone, warnings can make emphasis look different from chapter to chapter. Change the font or simplify the requested shape.
- Move repeated uses into semantic macros. For terms, UI names, and other recurring roles, collect the styling in a command such as
\newcommand{\term}[1]{...}instead of repeating font switches in the prose.