我知道有多个关于粗体无衬线字体数学的问题,即这和这和这。但是,所有这些问题的 OP 似乎都满足于正直的数学,而我却不是。我试着自己尝试一下。我的目标是有一个数学版本sansbold
用于标题(规定使用 lmodern 字体和粗体 sans 标题)。为了完整起见,我还尝试了一个sans
数学版本,但我不需要它。
sansmath.sty
我通过复制和修改我理解的部分获得了以下代码:
\documentclass{scrartcl}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\DeclareMathVersion{sansbold}
\SetSymbolFont{operators}{sansbold}{OT1}{lmss}{bx}{n}
\SetSymbolFont{letters}{sansbold}{OML}{cmssm}{b}{it} % for cmmi/lmmi
\SetSymbolFont{symbols}{sansbold}{OMS}{cmsssy}{b}{n} % for cmsy/lmsy
%\SetSymbolFont{symbols}{sansbold}{OMS}{lmsy}{b}{n} % actual lmsy
\SetSymbolFont{largesymbols}{sansbold}{OMX}{cmssex}{m}{n} % for cmex/lmex
\SetMathAlphabet\mathsf{sansbold}{OT1}{lmss}{bx}{n}
\SetMathAlphabet\mathbf{sansbold}{OT1}{lmss}{bx}{n}
\DeclareMathVersion{sans}
\SetSymbolFont{operators}{sans}{OT1}{lmss}{m}{n}
\SetSymbolFont{letters}{sans}{OML}{cmssm}{m}{it} % for cmmi/lmmi
\SetSymbolFont{symbols}{sans}{OMS}{cmsssy}{m}{n} % for cmsy/lmsy
%\SetSymbolFont{symbols}{sans}{OMS}{lmsy}{m}{n} % actual lmsy
\SetSymbolFont{largesymbols}{sans}{OMX}{cmssex}{m}{n} % for cmex/lmex
\SetMathAlphabet\mathrm{sans}{OT1}{lmss}{m}{n}
\SetMathAlphabet\mathrm{sans}{OT1}{lmss}{bx}{n}
\usepackage{amssymb}
\SetMathAlphabet{\mathfrak}{sansbold}{U}{euf}{b}{n}
\SetMathAlphabet{\mathfrak}{sans}{U}{euf}{m}{n}
\newcommand{\test}{\(
\nsubseteq
\mathsf{A} \mathfrak{A} \mathrm{A} \mathcal{A} \mathbf{A} a + b \not \leq \subseteq c \sum \oplus \bigoplus \int_a^b \sin \gamma \Gamma ( \bigl( \Bigl( \biggl(
\)}
\parindent=0pt
\begin{document}
\section{Bla \mathversion{sansbold}\test}
\mathversion{sans}
\test
\mathversion{sansbold}
\test
\mathversion{bold}
\test
\mathversion{normal}
\test
\end{document}
结果:
我有一些问题:
- 已删除,没有任何意义。
- 已删除,没有任何意义。
- 有什么问题
\nsubseteq
?我记得这是来自 amsfonts 的。由于 中的符号\mathversion{bold}
也不是粗体,我猜这是因为 amsfonts 没有提供粗体? - sansmath 的文档说该包提供了与 amsfonts 对应的字体
ssmsam
和。但是设置提供了错误的符号。令我惊讶的是,甚至包含行,如果我没记错的话,这是 amsfonts-font?如何正确使用?ssmsbm
\SetSymbolFont{AMSa}{sans}{U}{ssmsam}{m}{n}
sansmath.sty
\DeclareSymbolFont{AMSa}{U}{ssmsa}{m}{n}
ssmasm/ssmsbm
- ,有什么问题
\sum
?\int
我猜 lmodern 已经不为这些符号提供粗体了。我猜 sansmath 也不提供粗体,对吗?设置\SetSymbolFont{largesymbols}{sansbold}{OMX}{cmssex}{b}{n}
警告我该字体不存在。所以我认为是的。
最重要的是:
- 我是不是做错了什么事?
我发现符号不见了,看起来largesymbols
有点丑,但这一切比\boldmath
章节标题中的带衬线的数学符号漂亮得多。无论如何,显然我的标题中没有那么多数学符号,所以我可以轻松避免使用缺失的符号。
编辑。抱歉,我的问题已经很长了。我仍然想明确说明我的意图:我必须使用 lmodern 作为主字体,并使用 bold sans 作为标题字体。我想定义一个数学版本sansbold
以尽可能满足这些要求。我认为,使用 sansmath 包中的字体可能会很方便。如果我不小心使用了 cm-fonts 而没有注意到,那是因为 cm 和 lm 在数学中很难区分。我的想法是始终使用 sansmath 中的字体(如果提供的话)(或者,当然,如果 lm 能完成工作的话)。
我再次尝试更新我的问题,因此我实际上使用了lm
。
答案1
鉴于帖子标题询问的是拉丁现代,而您使用计算机现代来声明所有声明,您的所有设置似乎都有点令人惊讶。但要回答这些问题。
为什么
\mathversion{sans} $\mathbf{A}$
选择正确的字体,您没有在此处定义“正确”。我本来期望两个期望输出中的一个。
lm bold roman(如果您将
\mathrm
和解释\mathbf
为直立衬线字体)或
lm bold sans serif(如果您将\mathrm
和解释\mathbf
为直立“主字体系列”)
你确实得到.\OT1/cmr/bx/n/10.95 A
了厘米粗体是乳胶的默认设置,因为(正如您所评论的)这个字母表尚未在该版本中声明
- 对于其他被注释掉的字母也同样如此。
您得到的答案与 1 相同,除了\mathrm
默认使用operators
您声明的字体的例子。
- 有什么问题
\nsubseteq
?
正如你所说,amsfonts 没有粗体(sansmath 中的派生版本也没有)
- 这一行
\DeclareSymbolFont{AMSa}{U}{ssmsa}{m}{n}
,如果我没记错的话,就是 amsfonts 字体?
ussmsa.fd
显示{U}{ssmsa}
与不来自 AMS 的字体 ssmsam(10,7,5) 相关
\sum
,有什么问题\int
?
您在这里使用的是现代计算机字体,而不是拉丁现代字体,您\OMX/cmssex/m/n/14.4 P
从 sansmath 获得扩展字体,正如您所说的那样,像原始 cm 一样,没有粗体大符号字体
- 我是不是做错了什么事?
可能,这取决于实际要求是否使用现代拉丁语。
我想你可以添加
\SetSymbolFont{AMSa}{sansbold}{U}{ssmsa}{m}{n}
\SetSymbolFont{AMSb}{sansbold}{U}{ssmsb}{m}{n}
\SetSymbolFont{AMSa}{sans}{U}{ssmsa}{m}{n}
\SetSymbolFont{AMSb}{sans}{U}{ssmsb}{m}{n}
所以
\documentclass{scrartcl}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\DeclareMathVersion{sansbold}
\SetSymbolFont{operators}{sansbold}{OT1}{cmsmf}{bx}{n}
\SetSymbolFont{letters}{sansbold}{OML}{cmssm}{b}{it}
\SetSymbolFont{symbols}{sansbold}{OMS}{cmsssy}{b}{n}
\SetSymbolFont{largesymbols}{sansbold}{OMX}{cmssex}{m}{n}
\SetMathAlphabet\mathsf{sansbold}{OT1}{cmsmf}{bx}{n}
\SetMathAlphabet\mathbf{sansbold}{OT1}{cmsmf}{bx}{n}
\SetMathAlphabet\mathit{sansbold}{OT1}{cmsmf}{bx}{it}
\DeclareMathVersion{sans}
\SetSymbolFont{operators}{sans}{OT1}{cmsmf}{m}{n}
\SetSymbolFont{letters}{sans}{OML}{cmssm}{m}{it}
\SetSymbolFont{symbols}{sans}{OMS}{cmsssy}{m}{n}
\SetSymbolFont{largesymbols}{sans}{OMX}{cmssex}{m}{n}
\SetMathAlphabet\mathsf{sans}{OT1}{cmsmf}{m}{n}
\SetMathAlphabet\mathbf{sans}{OT1}{cmsmf}{bx}{n}
\SetMathAlphabet\mathit{sans}{OT1}{cmsmf}{m}{it}
\usepackage{amssymb}
\SetMathAlphabet{\mathfrak}{sansbold}{U}{euf}{b}{n}
\SetMathAlphabet{\mathfrak}{sans}{U}{euf}{m}{n}
\SetSymbolFont{AMSa}{sansbold}{U}{ssmsa}{m}{n}
\SetSymbolFont{AMSb}{sansbold}{U}{ssmsb}{m}{n}
\SetSymbolFont{AMSa}{sans}{U}{ssmsa}{m}{n}
\SetSymbolFont{AMSb}{sans}{U}{ssmsb}{m}{n}
\newcommand{\test}{\(
\nsubseteq
\mathfrak{A} \mathrm{A} \mathcal{A} a + b \not\subseteq c \sum \oplus \bigoplus \int_a^b \sin \gamma \Gamma ( \bigl( \Bigl( \biggl(
\)}
\parindent=0pt
\begin{document}
\section{Bla \mathversion{sansbold}\test}
\showoutput
\sbox0{\mathversion{sans} $\mathbf{A}$}%\showbox0
\mathversion{sans}
\test
\mathversion{sansbold}
\test
\mathversion{bold}
\test
\mathversion{normal}
\test
\end{document}