lmodern 的 sans 和 bold sans math 版本

lmodern 的 sans 和 bold sans math 版本

我知道有多个关于粗体无衬线字体数学的问题,即。但是,所有这些问题的 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}

结果:

在此处输入图片描述

我有一些问题:

  1. 已删除,没有任何意义。
  2. 已删除,没有任何意义。
  3. 有什么问题\nsubseteq?我记得这是来自 amsfonts 的。由于 中的符号\mathversion{bold}也不是粗体,我猜这是因为 amsfonts 没有提供粗体?
  4. sansmath 的文档说该包提供了与 amsfonts 对应的字体ssmsam和。但是设置提供了错误的符号。令我惊讶的是,甚至包含行,如果我没记错的话,这是 amsfonts-font?如何正确使用?ssmsbm\SetSymbolFont{AMSa}{sans}{U}{ssmsam}{m}{n}sansmath.sty\DeclareSymbolFont{AMSa}{U}{ssmsa}{m}{n}ssmasm/ssmsbm
  5. ,有什么问题\sum\int我猜 lmodern 已经不为这些符号提供粗体了。我猜 sansmath 也不提供粗体,对吗?设置\SetSymbolFont{largesymbols}{sansbold}{OMX}{cmssex}{b}{n}警告我该字体不存在。所以我认为是的。

最重要的是:

  1. 我是不是做错了什么事?

我发现符号不见了,看起来largesymbols有点丑,但这一切比\boldmath章节标题中的带衬线的数学符号漂亮得多。无论如何,显然我的标题中没有那么多数学符号,所以我可以轻松避免使用缺失的符号。

编辑。抱歉,我的问题已经很长了。我仍然想明确说明我的意图:我必须使用 lmodern 作为主字体,并使用 bold sans 作为标题字体。我想定义一个数学版本sansbold以尽可能满足这些要求。我认为,使用 sansmath 包中的字体可能会很方便。如果我不小心使用了 cm-fonts 而没有注意到,那是因为 cm 和 lm 在数学中很难区分。我的想法是始终使用 sansmath 中的字体(如果提供的话)(或者,当然,如果 lm 能完成工作的话)。

我再次尝试更新我的问题,因此我实际上使用了lm

答案1

鉴于帖子标题询问的是拉丁现代,而您使用计算机现代来声明所有声明,您的所有设置似乎都有点令人惊讶。但要回答这些问题。

  1. 为什么\mathversion{sans} $\mathbf{A}$选择正确的字体,

    您没有在此处定义“正确”。我本来期望两个期望输出中的一个。

    lm bold roman(如果您将\mathrm和解释\mathbf为直立衬线字体)或
    lm bold sans serif(如果您将\mathrm和解释\mathbf为直立“主字体系列”)

你确实得到.\OT1/cmr/bx/n/10.95 A厘米粗体是乳胶的默认设置,因为(正如您所评论的)这个字母表尚未在该版本中声明

  1. 对于其他被注释掉的字母也同样如此。

您得到的答案与 1 相同,除了\mathrm默认使用operators您声明的字体的例子。

  1. 有什么问题\nsubseteq

正如你所说,amsfonts 没有粗体(sansmath 中的派生版本也没有)

  1. 这一行\DeclareSymbolFont{AMSa}{U}{ssmsa}{m}{n},如果我没记错的话,就是 amsfonts 字体?

ussmsa.fd显示{U}{ssmsa}与不来自 AMS 的字体 ssmsam(10,7,5) 相关

  1. \sum,有什么问题\int

您在这里使用的是现代计算机字体,而不是拉丁现代字体,您\OMX/cmssex/m/n/14.4 P 从 sansmath 获得扩展字体,正如您所说的那样,像原始 cm 一样,没有粗体大符号字体

  1. 我是不是做错了什么事?

可能,这取决于实际要求是否使用现代拉丁语。

我想你可以添加

\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}

相关内容