下面的简短示例显示了\bfseries
有其效果,但 叠加在\em
的效果上。如果\rmfamily
只是表示“不添加任何内容”,这也解释了为什么它基本上没有效果。但是,我很好奇是否有\un-em
/\remove-previous-declarations
声明或类似的东西
\documentclass{article}
\usepackage{amsmath}
\begin{document}
Hello, \em my name \bfseries is Enrico. \rmfamily And now what?
\end{document}
\emph
我知道我可以使用命令而不是声明来限制强调的文本\em
,但我很好奇。
答案1
您可以使用\emreset
来取消 和 的效果\em
,normalfont
或者\mdseries
来取消 的效果\bfseries
。
\documentclass{article}
\begin{document}
Hello, \em my name \emreset\bfseries is Enrico. \normalfont And now what?
\end{document}
或者您可以使用{}
来限制有效范围。
\documentclass{article}
\begin{document}
Hello, {\em my name} {\bfseries is Enrico.} And now what?
\end{document}
或者只使用带参数的 TextFontCommand。
\documentclass{article}
\begin{document}
Hello, \emph{my name} \textbf{is Enrico.} And now what?
\end{document}
答案2
这个行动\rmfamily
并不是“什么也不做”。
在 1994 年左右 LaTeX 采用的 NFSS 模型中,字体具有四个独立属性:
- 编码
- 家庭
- 形状
- 系列
我们可以将尺寸添加到其中。这些属性彼此独立。编码有点奇怪,我不会处理它。
有一些预定义命令可以一次更改一个属性:
\rmfamily
,,\sffamily
\ttfamily
\upshape
,,,,\itshape
\scshape
\slshape
\mdseries
,\bfseries
支持更丰富字体的字体包可能会为形状和系列定义其他命令。
还有另一个“抽象”声明,即\em
,过去定义为“如果当前字体不倾斜,则执行\itshape
,否则执行” \upshape
。最近,其含义被更改为支持一系列命令,其效果是能够以不同的方式指定实现“强调内部强调”的方式。我们不要把事情复杂化,因为您的示例很简单。
假设你从开始\normalfont
,你得到
您好,<rmfamily/itshape/mdseries>我的名字<rmfamily/itshape/bfseries>是 Enrico。<rmfamily/itshape/bfseries>现在怎么办?
最后一个\rmfamily
命令没有任何作用,因为这个家庭已经存在了\rmfamily
:你从来没有改变过这个家庭,是吗?
没有“撤消上次更改”的命令,因为这在 NFSS 模型中没有意义:上面列出的命令永远不应该在文档中使用,除非它们是在组内按照 TeX 的一般规则,组会限制字体选择的范围,因此当你执行类似以下操作时
{\em text}
所执行的字体选择\em
消失并且字体返回到组开始时有效的字体。
一般来说,我更喜欢\itshape text
在对齐单元格中使用斜体,因为这\textit{text}
会让 LaTeX 继续旋转而没有任何收获。
是的!上面列出的命令都有一个带参数的命令对应项:
\textrm
,,\textsf
\texttt
\textup
,,,,\textit
\textsc
\textsl
\textmd
,\textbf
\emph
最后一个是“抽象的”,它选择的字体取决于上下文,就像\em
。这样的命令是首选更改运行文本中的字体:使用\emph{my name is Enrico}
而不是{\em my ...}
,因为\emph
还处理了字体更改之前或之后可能需要的斜体校正。
如果你希望将强调内部强调实现为粗体,该怎么办?你可以在文档序言中声明如下内容
\DeclareEmphSequence{\itshape,\upshape\bfseries,\itshape\bfseries}
例子。
\documentclass{article}
\DeclareEmphSequence{\itshape,\upshape\bfseries,\itshape\bfseries}
\begin{document}
Hello, \emph{my name \emph{is Enrico.}} And now what?
\emph{Hello, \emph{my name \emph{is Enrico.} And} now} what?
\end{document}
在第二个(人为的)示例中,您会看到随着各个嵌套组的结束,属性被逐个恢复。