下面的簡短範例顯示\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
不是「什麼都不做」。
在 LaTeX 於 1994 年左右採用的 NFSS 模型中,字體具有四個獨立的屬性:
- 編碼
- 家庭
- 形狀
- 系列
我們可以添加尺寸。這些屬性是互相獨立的。編碼有點特殊,我不會處理它。
有一些預定義指令可以一次更改一個屬性:
\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}
在第二個(人為的)範例中,您會看到隨著各個嵌套群組的結束,屬性被一一恢復。