\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不是「什麼都不做」。

在 LaTeX 於 1994 年左右採用的 NFSS 模型中,字體具有四個獨立的屬性:

  1. 編碼
  2. 家庭
  3. 形狀
  4. 系列

我們可以添加尺寸。這些屬性是互相獨立的。編碼有點特殊,我不會處理它。

有一些預定義指令可以一次更改一個屬性:

  • \rmfamily, \sffamily,\ttfamily
  • \upshape, \itshape, \scshape,\slshape
  • \mdseries,\bfseries

支援更豐富字體的字體包可以定義形狀和系列的其他命令。

還有另一個“抽象”聲明,即\em,它過去被定義為“如果當前字體不傾斜,則執行\itshape,否則執行\upshape”。最近其含義已更改為支援一系列命令,從而能夠以不同方式指定實現的「強調中的強調」。我們不要把事情複雜化,因為你的例子很簡單。

假設你從 開始\normalfont,你會得到

你好,<rmfamily/itshape/mdseries>我的名字<rmfamily/itshape/bfseries>是恩里科。 <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}

在此輸入影像描述

在第二個(人為的)範例中,您會看到隨著各個嵌套群組的結束,屬性被一一恢復。

相關內容