\textit 与 \emph 的关系,就如同 \textbf 与……的关系一样?

\textit 与 \emph 的关系,就如同 \textbf 与……的关系一样?

据称,\emph更“语义化”,而\textit可以看作是其实现的一个方面。LaTeX 没有\strong--- ,而 HTML 则同时具有<em><strong>。那么我应该自己动手\strong还是有点矫枉过正?或者还有其他等效的命令?

答案1

其背后的想法\emph是,它提供了一种强调文本某一部分的高级方法。高级的意思是它“独立于”实际的实现。

的默认行为\emph是在直立上下文中使用斜体,在斜体上下文中使用直立,但这可以根据文档进行修改(或通过实现特定样式的包进行修改)。特别是,你的问题没有真正的答案:\emph\textit没有“抽象”关系;这种关系只存在于默认实现级别。

这与声明文本的某些部分为斜体不同;例如,定理通常以斜体排版,样式\itshape为此使用 ,而不是\em( 的声明形式\emph)。同样,它们用于\bfseries定理标签(或\scshape或任何其他)。

你可以随意定义任意数量的类似命令。如果你的风格需要某种“强烈强调”,那么\strong随意定义,也许\bfseries在正常上下文中使用,并\extrabfseries在上下文中使用(如果您的字体支持,则名称是假设的)\strong。在这样做之前,请深思熟虑您的读者是否能够理解\emph{word}和之间的区别\strong{word}(我认为他们不会)。

答案2

关于如何定义\emph和,可能存在一些混淆。从 latex 内核(参见):\emlatex.ltx

\DeclareTextFontCommand{\emph}{\em}
\DeclareRobustCommand\em
        {\@nomath\em \ifdim \fontdimen\@ne\font >\z@
                       \eminnershape \else \itshape \fi}%
\def\eminnershape{\upshape}%

基本上,\emph(via \em)检查它是否已经处于“强调模式”。如果不是,\itshape则执行;如果是,则执行\eminnnershape——默认情况下设置为——。(可以通过指令进行修改。例如,运行将选择小型大写字母作为“内部”强调材料。)\upshape\eminnershape\renewcommand\renewcommand\eminnershape{\scshape}}

因此,情况并非\emph只是比“更具语义” \textit。事实上,\emph 更具语义——它允许您选择印刷强调的方法(默认\itshape为“外部”和\upshape“内部”材料)——但它还提供了一种提供强调的方法在强调材料内。

最后,如果你想知道\DeclareTextFontCommand在 LaTeX 内核中是如何定义的,请看下面:

\def \DeclareTextFontCommand #1#2{%
  \DeclareRobustCommand#1[1]{%
    \ifmmode
      \nfss@text{#2##1}%
    \else
      \hmode@bgroup
       \text@command{##1}%
       #2\check@icl ##1\check@icr
       \expandafter
      \egroup
    \fi
                       }%
}

相关内容