粗体、斜体数学 (\bm) 和 sansmath

粗体、斜体数学 (\bm) 和 sansmath

我正在用拉丁现代字体排版文本和数学,除了图形之外,我想对文本和数学使用无衬线字体。

我需要遵循 ISO 数学排版建议。这包括需要用粗体斜体排版矢量。在文档中,我使用\bmbm包来实现此目的。它工作正常。

现在我开始使用包sansmath中的环境sansmath来获取无衬线字体的图形。为了简单起见,我在以下示例中没有放置图形。

\documentclass{scrartcl}

\usepackage{lmodern}
\usepackage{bm}
\usepackage{sansmath}

\begin{document}

$\bm{d} = (d_1, d_2)$

$\mathbf{d} = (d_1, d_2)$

\begin{sansmath}
$\bm{d} = (d_1, d_2)$

$\mathbf{d} = (d_1, d_2)$
\end{sansmath}

\end{document}

如示例所示,我也可以使用mathbf,它在环境中也能发挥作用sansmath。但是,我不能将字母竖直地放在向量中。

是否有其他可用的软件包组合,既能进行无衬线数学运算,又能支持粗体斜体?

答案1

据我理解,您希望命令\bm始终将其内容排版为倾斜的样式,无论是在普通模式(即衬线模式)、数学模式还是在 sansmath 环境中。以下修改后的 MWE 版本实现了此目标。

相对于您的代码,我做了以下三处更改:(a)sansmath现在使用选项加载包T1;(b)\SetMathAlphabet{\mathsfbf}...{bx}{sl}命令告诉 LaTeX 在粗体数学模式下使用倾斜字体;(c)环境sansmath得到增强,因此\bm将按照其方式排版其参数\mathsfbf。(我说“增强”而不是“修补”,因为我相信包sansmath早于bm包。因此,sansmath包不能考虑到后续\bm命令的出现,对吗?)

需要注意的是:这个快速修复可以\bm像预期的那样对环境中的小写和大写拉丁字母进行操作sansmath。但是,该包的其他一些“魔力”bm是,它还可以对希腊字母和数学符号进行操作不是该方法保留。要在 sansmath 环境中将希腊字母和数学符号设置为粗体,您必须使用命令\boldsymbol。(顺便说一句,据我所知,拉丁现代字体系列不提供单独的无衬线数学模式希腊字母,无论是常规粗细还是粗体。因此,如果您在环境中使用希腊字母sansmath,您将获得普通数学模式希腊字母,这在无衬线环境中可能看起来不正确。如果你必须您的文档中有无衬线希腊字母数学模式,您可能应该使用 xelatex 并使用提供此功能的专门数学字体。)

\documentclass{scrartcl}                             
\usepackage{lmodern,bm}                
\usepackage[T1]{sansmath} 
\SetMathAlphabet{\mathsfbf}{sans}{\sansmathencoding}{\sfdefault}{bx}{sl}
\usepackage{etoolbox}
\AtBeginEnvironment{sansmath}{\let\bm\mathsfbf}{}{}
\begin{document}                
Serif math:

$\bm{d} = (d_1, d_2)$                

$\mathbf{d} = (d_1, d_2)$                

\textsf{Sans-serif math:}

\begin{sansmath}                
$\bm{d} = (d_1, d_2)$                

$\mathbf{d} = (d_1, d_2)$                
\end{sansmath}                

\end{document}

在此处输入图片描述

答案2

这里有一些选项 - 要么是文本版本,要么使用sfmath包裹

在此处输入图片描述

\documentclass{scrartcl}
\usepackage{lmodern}% http://ctan.org/pkg/lm
\usepackage{bm}% http://ctan.org/pkg/bm
\usepackage{sfmath}% http://ctan.org/pkg/sfmath
\newcommand{\mathbfit}[1]{\textbf{\textit{\textsf{#1}}}}
\begin{document}
\renewcommand{\arraystretch}{1.2}
\begin{tabular}{r@{\quad}r}
  \verb|\bm|: & $\bm{d} = (d_1, d_2)$ \\
  \verb|\mathbf|: & $\mathbf{d} = (d_1, d_2)$ \\
  \verb|\mathbfit|: & $\mathbfit{d} = (d_1, d_2)$
\end{tabular}
\end{document}

相关内容