使文本加粗/斜体的“正确”方法是什么?

使文本加粗/斜体的“正确”方法是什么?

在使文本加粗方面,这两种方法是否比其他方法更好/更易读/更“合适”/更常规?如果是,原因是什么?

I like my text \textbf{bold}

相对:

I like my text {\bf bold}

答案1

Marc van Dongen 给出了一个很好的答案。我再补充一个原因:

\it并且\bf不能很好地协同工作。也就是说,它们不能像人们直观预期的那样嵌套:

\textit和确实\textbf可以很好地协同工作:

这很好。但是,您可能会注意到,它仍然无法处理对小型大写字母的嵌套样式调整,因为 Computer Modern 字体不包含倾斜或粗体小型大写字母:

如果这对您来说是个问题,那么请将该slantsc包与该包结合使用lmodernslantsc除其他外,它还提供\rmfamily(roman)、\ttfamily(typewriter/​teletype)、\sffamily(sans-serif)、\bfseries(boldface)、\itshape(italics)、\slshape(slant/​oblique) 和\scshape(small caps)。通过这些,可以以倾斜形式获得小型大写字母:

作为奖励,slantsc已修复\textsl以便正常运行\textsc,因此您可以继续使用它们(如果您愿意)。

唉,我还没有找到一个可以修复嵌套实例行为的包\textit。在排版中,当你嵌套斜体时,你应该回来斜体转换为罗马体。例如,下面的单词“Titanic”是嵌套斜体(理想情况下应该呈现为罗马体,而不是斜体):

田中,雪莉。在船上泰坦尼克号:大客轮沉没时是什么样子纽约:Hyperion/Madison Press,1998 年。

作为一种解决方法,人们通常可以写\textrm下来在这些情况下暂时返回非斜体,但当然这只有在您知道嵌套斜体级别的确切数量时才有效,而情况可能并非总是如此,特别是在宏中。

更新:

正如其他人指出的那样,\textit\textsl会自动进行斜体校正,而\it\itshape\sl和 则\slshape不会。因此,您可以写\textit{stuff},但必须写{\it stuff\/}{\itshape stuff\/}才能获得相同的效果。

答案2

一般的如果文本后面是同一行上的更多文本,并且后面没有小标点符号,则命令 ( \textbf/ ) 方法更有用。如果文本本身就是一个段落,或者后面跟着一个小标点符号,那其实并不重要。在这种情况下,声明 ( /和/ ) 相当于命令。正如其他人指出的那样,声明和已被弃用,应避免使用。\textit\bf\bfseries\it\itshape\bf\it

要了解为什么应该优先使用这些命令,请注意\textit在末尾插入斜体校正,如果文本以带有长上升部分的字母结尾,并且否则会碰到下一个字符,则会添加一个小的水平补偿。声明(\it\itshape)不会插入斜体校正。

下面的第四、第五和第六行显示了命令可能与声明不同的原因。在第四行中,您可以获得正确的斜体校正,而在第五和第六行中则没有,这导致连字符ff跑到h.

\documentclass{article}

\usepackage{booktabs}

\begin{document}
  \Huge
  \begin{tabular}{lll}
    \toprule
    \verb|\textbf{fluff} hair|    & \textbf{fluff} hair
  \\\verb|{\bf fluff} hair|       & {\bf fluff} hair
  \\\verb|{\bfseries fluff} hair| & {\bfseries fluff} hair
  \\\midrule
    \verb|\textit{fluff} hair|    & \textit{fluff} hair
  \\\verb|{\itshape fluff} hair|  & {\itshape fluff} hair
  \\\verb|{\it fluff} hair|       & {\it fluff} hair
  \\\bottomrule
  \end{tabular}
\end{document}

<code>\textbf</code>、<code>\textit</code> 与 <code>\bfseries</code>、<code>\itshape</code> 和 <code>\bf</code>、<code>\it</code> 对比

答案3

首先,您不应该使用 LaTeX2.0 中的过时\bf\it。它们不使用 LaTeX2e 的新字体选择方案 (NFSS)。因此,它们\bf只会进行粗体和粗体处理,但不会与斜体设置混合,这使得粗体斜体无法实现。请使用新\bfseries宏。

\textbf{<content>}和之间没有太多实际区别{\bfseries <content>}。我认为大多数人(对于短文本)使用第一种用法,因为它遵循常见的\somemacro{<content>}LaTeX 样式。当然,如果您想使环境/组的其余部分加粗,则应使用后者。

您应该注意到\textbf使用\bfseries内部,因此后者是更基本的宏。的定义\textbf是:

\ifmmode
  \nfss@text {\bfseries #1}%
\else
  \hmode@bgroup
  \text@command {#1}%
  \bfseries \check@icl #1\check@icr
  \expandafter
  \egroup
\fi

因此\textbf在数学模式中切换到文本模式,但\bfseries显然没有。它还在内容前后添加了斜体校正检查,这是 LaTeX2e 的一大特色。

它的其中一个好处\bfseries是它不会将内容读取为参数,这会干扰逐字内容和其他特殊代码所需的 catcode 更改。

总之,我建议\textbf将其用于较小的文本,主要是因为斜体校正,以及数学模式。在我看来,\bfseries它更适合环境和较大的文本。一个值得注意的例外是,如果您有粗体和斜体(等等)组合,那么您可以写\textit{\bfseries <content>},以避免两组括号,但这更像是一种时尚选择。您不应该在现代 LaTeX 文档中使用\bf

相关内容