粗体无衬线字体不起作用吗?

粗体无衬线字体不起作用吗?
\documentclass{article}

\newcommand{\nptime}{\ensuremath{\sf NP}}
\newcommand{\bnptime}{\ensuremath{\sf\bf NP}}

\begin{document}
  \nptime\\
  \bnptime
\end{document}

我正在尝试制作一个宏来将“NP”排版为粗体无衬线字体,但正如我的 MWE 所演示的那样,它不起作用。BF 似乎强制使用衬线字体。

或者,我很乐意找到 的反义词\ensuremath,但我似乎找不到。我试过了,但\text{}无济于事。

以下类似的 MWE 做同样的事情。

\documentclass{article}

\newcommand{\nptime}{{\sf NP}}
\newcommand{\bnptime}{{\sf\bf NP}}

\begin{document}
  \nptime\\
  \bnptime
\end{document}

答案1

没有必要\ensuremath: 只需使用

\newcommand{\nptime}{\textsf{NP}}
\newcommand{\bnptime}{\textsf{\textbf{NP}}}

因此\nptime和可以在文本和数学模式下工作,如果使用\bnptime该包,则在下标或上标中使用时甚至可以缩放。amsmath


您发现了为什么\sf\bf并且所有两个字母的字体更改命令都已弃用(并且它们已经弃用了 10 多年):组合\sf\bf仅仅相当于\bf,就像\sf\it会产生普通斜体而不是无衬线,并且\it\sf会产生直立无衬线。

相关内容