Sans Serif 中的 \textbf 和 \bf

Sans Serif 中的 \textbf 和 \bf

我正在使用\renewcommand{\familydefault}{\sfdefault}无衬线字体,所以我的整个文档都是无衬线字体,但是在格式方面我得到了奇怪的结果。

我是一个相当稀少的 LaTeX 用户,但过去我总是使用\textbf{Super Important Text!}粗体文本而不是我被告知已经过时的文本;{\bf Important Junk}(这是我首先学到的)。

\sfdefault虽然我在序言中写了那一行,\textbf{}但 完全忽略了 而{\bf }不是。我想如果答案是我必须使用 ,那也不会是世界末日{\bf },但我假设你不应该这样做是有原因的。

我能找到的最接近的解决方案是LaTeX 中的粗体无衬线字体,但它处理的是章节名称而不是文本格式。

编辑:抱歉,我一点一点地重建了文档,结果发现\usepackage{charter}是它导致了这个问题。令人困惑的是如果我删除了\renewcommand{\familydefault}{\sfdefault},然后恢复了正常的粗体功能。事实证明\textbf,如果这两行都在序言中,它就不会起作用。虽然我很好奇为什么会这样,但我charter目前从事的项目不需要它,所以从实际目的来看,这个问题已经解决了。

\documentclass{article}
\usepackage{charter}                             % If either of these two are removed
\renewcommand{\familydefault}{\sfdefault}         % There is no issue

\begin{document}
\textbf{Not bold.}
{\bf Quite Bold.}
Also Not Bold.
\end{document}

不粗体。相当大胆。也不粗体。

答案1

问题的根源在于命名问题:Computer Modern 的粗体系列实际上是粗体/扩展,代码为 bx,而大多数其他字体都有普通粗体,代码为 b。您的日志文件应该会告诉您类似以下内容:

LaTeX Font Warning: Font shape `OT1/cmss/b/n' undefined
(Font)              using `OT1/cmss/m/n' instead on input line 6.

翻译成可读的意思就是:“我没有 Computer Modern Sans in Bold Upright,所以我改用 Computer Modern Sans in Medium Upright”。 (charter将粗体重新定义为粗体,而不是粗体扩展,以便其粗体可以正常工作。)

最简单的修复方法可能是使用,\usepackage{lmodern,charter}因为lmodern虽然从视觉上看与默认的 Computer Modern 字体非常相似,但其无衬线字体却具有 b-not-bx-bold。

答案2

提供一份完整的小文档来说明问题总是有帮助的。如果我尝试:

\documentclass{article}
\renewcommand{\familydefault}{\sfdefault}

\usepackage{array}

\begin{document}

\showoutput
aaa \textbf{bbb} {\bf ccc}

\end{document}

然后日志(和 pdf 结果)显示 bbb 和 ccc 都是粗体无衬线字体,使用相同的字体:

....\OT1/cmss/m/n/10 a
....\OT1/cmss/m/n/10 a
....\OT1/cmss/m/n/10 a
....\kern 0.0
....\glue 3.33333 plus 1.66666 minus 1.11111
....\OT1/cmss/bx/n/10 b
....\OT1/cmss/bx/n/10 b
....\OT1/cmss/bx/n/10 b
....\kern 0.0
....\glue 3.33333 plus 1.66666 minus 1.11111
....\OT1/cmss/bx/n/10 c
....\OT1/cmss/bx/n/10 c
....\OT1/cmss/bx/n/10 c

在此处输入图片描述

相关内容