52

I have only ever used \textit (and \emph for emphasized text), but have noticed that in some TeX examples, \itshape is used instead of \textit. Is there a difference between \textit and \itshape? If so, what is that difference?

doncherry
  • 54,637
squidbear
  • 1,017

3 Answers3

61

\itshape is a switch:

Not italic {\itshape Italic} Not italic

\textit takes an argument:

Not italic \textit{Italic} Not italic

Many people seem to like \itshape{...}, which is wrong (but doesn't give an error since the braces are interpreted as grouping delimiters here). \itshape doesn't automatically insert italic correction, whereas \textit does, so inside a paragraph, \textit is usually better. On the other hand, sometimes the switch commands are more handy if you already have grouping (e.g., with braces or environments):

\begin{table}
  \itshape
  Everything inside this table is italic
\end{table}
Philipp
  • 17,641
  • So would \itshape be best reserved for fully italicized paragraphs (where there is no need for additional spacing at the end of the paragraph)? – squidbear Dec 31 '10 at 20:49
  • 1
    @quidbear, I would pretty much always use \textit (actually \emph), and only reserve \itshape for defining new commands and environments. – Juan A. Navarro Jan 24 '11 at 11:07
39
  • \itshape is a declaration. It affects the following text. That's why it's often used for larger amounts of text or within a group. In contrast, \textit affects only its argument.

  • \textit provides italic correction, \itshape does not. This means, that immediately after an italic text made by \textit there's a little more space before the following text, compared with \itshape. A reason for the correction is, that because of the slanting the spacing could be too narrow, visually. It depends on the font.

  • \textit works in math mode, \itshape doesn't work in math mode.

Here's code for \textit, from latex.ltx:

\DeclareTextFontCommand{\textit}{\itshape}

\def \DeclareTextFontCommand #1#2{%
  \DeclareRobustCommand#1[1]{%
    \ifmmode
      \nfss@text{#2##1}%
    \else
      \hmode@bgroup
       \text@command{##1}%
       #2\check@icl ##1\check@icr
       \expandafter
      \egroup
    \fi
                       }%
}

As you can see, \textit uses \itshape but does more regarding math mode and italic correction.

Stefan Kottwitz
  • 231,401
10

\itshape and others like it (bfseries) are modal commands which don't take arguments. They change all succeeding text to that font shape/weight etc. \textit (and textbf) is a macro that takes an argument.

Alan Munn
  • 218,180