\rmfamily 起什么作用,或者我如何撤消像 \em 和 \bfseries 这样的声明?

\rmfamily 起什么作用,或者我如何撤消像 \em 和 \bfseries 这样的声明?

下面的简短示例显示了\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来取消 和 的效果\emnormalfont或者\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 模型中,字体具有四个独立属性:

  1. 编码
  2. 家庭
  3. 形状
  4. 系列

我们可以将尺寸添加到其中。这些属性彼此独立。编码有点奇怪,我不会处理它。

有一些预定义命令可以一次更改一个属性:

  • \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}

在此处输入图片描述

在第二个(人为的)示例中,您会看到随着各个嵌套组的结束,属性被逐个恢复。

相关内容