\textbf 比 \bf 有更宽的空间,并且有自己的命令

\textbf 比 \bf 有更宽的空间,并且有自己的命令

为什么这个命令会导致单词之间的间距比使用这个命令时\textbf弃用的间距更宽?\bf

\documentclass{article}
\usepackage{hyperref}
\begin{document}    
    \makeatletter
        \newcommand*{\textlabel}[2]{
            \edef\@currentlabel{#1}
            \phantomsection
            #1\label{#2}
        }
    \makeatother

\begin{description}
    \item[item] \textbf{\textlabel{First text}{ref1}} \\
    Description!
    \item[item] {\bf \textlabel{Second text}{ref2}} \\
    Description!
\end{description}
\end{document}

输出:

在此处输入图片描述

答案1

您的定义中有三个虚假空格\textlabel。如果通过屏蔽行尾来删除它们,结果是一样的:

\makeatletter
\newcommand*{\textlabel}[2]{% <- Here
  \edef\@currentlabel{#1}% <- Here
  \phantomsection
  #1\label{#2}% <- Here
}
\makeatother

为什么在第二种情况下空格不显示?因为\textbf本身就开启了一个段落,而 while\bf则不。所以在第二种情况下空格被忽略,因为 TeX 仍然没有排版段落。

正确的命令使用语法类似于\bf\bfseries它是一个声明,因此需要一对括号,或者可以在环境中发出。但最好\textbf在运行文本中使用:你可以看到两者之间的区别

{\bf stuff} boldfaced

\textbf{stuff} boldfaced

因为在第二种情况下,LaTeX 添加了“斜体校正”来补偿“f”碰到单词间的空间。

相关内容