我正在用拉丁现代字体排版文本和数学,除了图形之外,我想对文本和数学使用无衬线字体。
我需要遵循 ISO 数学排版建议。这包括需要用粗体斜体排版矢量。在文档中,我使用\bm
该bm
包来实现此目的。它工作正常。
现在我开始使用包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}