![为什么需要指定 \textnormal?](https://linux22.com/image/428465/%E4%B8%BA%E4%BB%80%E4%B9%88%E9%9C%80%E8%A6%81%E6%8C%87%E5%AE%9A%20%5Ctextnormal%EF%BC%9F.png)
我根据一个具体的例子提出这个问题,但这个问题更为普遍。
在 Stefan Kottwitz 的 LaTeX 初学者指南第 125 页中,为表格中的标题定义了一个新命令。操作如下:
\documentclass{article}
\newcommand{\head}[1]{\textnormal{\textbf{#1}}}
\begin{document}
为什么这是\textnormal
必要的?也就是说,如果我没有包括这一点,会发生什么问题?
答案1
LaTeX内核定义\textnormal
如下:
\DeclareTextFontCommand{\textnormal}{\normalfont}
该指令\normalfont
定义如下:
\DeclareRobustCommand\normalfont{%
\fontencoding\encodingdefault
\edef\f@family{\familydefault}%
\edef\f@series{\seriesdefault}%
\edef\f@shape{\shapedefault}%
\@defaultfamilyhook
\selectfont}
因此,\normalfont
将字体编码设置回其默认值,并将字体重置为各自的默认值家庭(通常是\rmfamily
,即一些衬线字体,而不是 ,\sffamily
或者\ttfamily
),字体系列(通常是\mdseries
,而不是\bfseries
),并且字体形状(通常\upshape
,而不是,\itshape
或者\scshape
)。
正如@campa 在评论中指出的那样,强烈建议指定低级\normalfont
指令或稍高级的\textnormal
指令,因为这样您就不必对在您需要更改其中一个属性时有效的字体属性组合做出可能无效的假设。