\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}
Marc van Dongen gave a great answer. I'll throw in another reason:
\it
and \bf
do not play well together. That is, they do not nest as one would intuitively expect:
Whereas \textit
and \textbf
do play well together:
This is nice. However, you may notice that it still fails to handle nested style adjustments to small caps, since the Computer Modern fonts do not contain slanted or bold small caps:
If this is a problem for you, then use the slantsc
package in combination with the lmodern
package. slantsc
provides, among other things, \rmfamily
(roman), \ttfamily
(typewriter/teletype), \sffamily
(sans-serif), \bfseries
(boldface), \itshape
(italics), \slshape
(slant/oblique), and \scshape
(small caps). With these, small caps can obtained in slanted form:
As a bonus, slantsc
fixes \textsl
to behave properly with \textsc
, so you can continue using those if you like.
Alas, I haven't yet found a package which fixes the behavior of nested instances of \textit
. In typesetting, when you nest italics, you're supposed to come back out of italics to roman. For example, the word "Titanic" below is in nested italics (which should ideally render as roman, not italics):
Tanaka, Shelly. On Board the Titanic: What It Was Like When the Great Liner
Sank. New York, NY: Hyperion/Madison Press, 1998.
As a workaround, one can usually write \textrm
to temporarily return to non-italics in those cases, but of course this is only valid if you know the exact number of nested italic levels, which may not always be the case, especially inside a macro.
Update:
As others have pointed out, \textit
and \textsl
do automatic italic correction, whereas \it
, \itshape
, \sl
, and \slshape
do not. Thus, you can write \textit{stuff}
, but you must write {\it stuff\/}
or {\itshape stuff\/}
to get the same effect.
Best Answer
That's exactly what
\emph
does:or, if you prefer to manually control that, then you can use
\textup
: