![\textit 和 \itshape 之间有区别吗?](https://linux22.com/image/233810/%5Ctextit%20%E5%92%8C%20%5Citshape%20%E4%B9%8B%E9%97%B4%E6%9C%89%E5%8C%BA%E5%88%AB%E5%90%97%EF%BC%9F.png)
我只使用过\textit
(\emph
和 来强调文本),但注意到在某些 TeX 示例中,\itshape
使用的是 而不是。和\textit
之间有区别吗? 如果有,区别是什么?\textit
\itshape
答案1
\itshape
是一个开关:
Not italic {\itshape Italic} Not italic
\textit
接受一个参数:
Not italic \textit{Italic} Not italic
很多人似乎喜欢\itshape{...}
,这是错误的(但不会给出错误,因为括号在这里被解释为分组分隔符)。
\itshape
不会自动插入斜体校正,而\textit
会在段落内插入,\textit
通常更好。另一方面,如果您已经有分组(例如,使用括号或环境),有时 switch 命令会更方便:
\begin{table}
\itshape
Everything inside this table is italic
\end{table}
答案2
\itshape
是宣言。它会影响后面的文本。这就是为什么它经常用于大量文本或组内文本。相比之下,\textit
只影响其参数。\textit
提供斜体修正则\itshape
不然。这意味着,\textit
与 相比,在 斜体文本之后,紧接着的文本之间的空间会稍微大一些\itshape
。进行修正的原因在于,由于倾斜,间距在视觉上可能太窄。这取决于字体。\textit
在数学模式下工作,\itshape
在数学模式下不起作用。
\textit
以下是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
}%
}
正如您所看到的,\textit
使用\itshape
数学模式和斜体校正但做得更多。
答案3
\itshape
和其它类似的命令 ( bfseries
) 是不需要参数的模态命令。它们将所有后续文本更改为该字体形状/粗细等。 \textit
( 和textbf
) 是需要参数的宏。