控制数学字体粗细和样式的问题

控制数学字体粗细和样式的问题

我正在尝试使用印刷惯例来区分几种不同类型的数学实体。默认数学字体中的 C 看起来非常接近 中的 C \mathcal。我的第一个想法是使用无衬线字体,但结果看起来很丑陋。我尝试使用\mathscrmathrsfs,但$\mathscr C$$\bm{\mathscr{C}}$看起来几乎相同。要求 xelatex 不是一个选项,但如果有帮助,我可以使用 euler 而不是 mathrsfs,只要 E 和 C 与默认数学字体中的呈现很容易区分,并且只要正常粗细脚本与粗体脚本很容易区分。

\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{bm}
\usepackage{mathrsfs} 

\usepackage[colorlinks,hidelinks]{hyperref}
\usepackage{cleveref}
\usepackage{showlabels}
\showlabels{cite}
\showlabels{cref}
\showlabels{crefrange}

\DeclareMathAlphabet{\mathsfbd}{T1}{\sfdefault}{\bfdefault}{\itdefault}
\SetMathAlphabet{\mathsfbd}{bold}{T1}{\sfdefault}{\bfdefault}{\itdefault}

\DeclareMathAlphabet{\mathsfbdit}{T1}{\sfdefault}{\bfdefault}{\itdefault}
\SetMathAlphabet{\mathsfbdit}{bold}{T1}{\sfdefault}{\bfdefault}{\itdefault}

\DeclareMathAlphabet{\mathsfit}{T1}{\sfdefault}{}{\itdefault}
\SetMathAlphabet{\mathsfit}{normal}{T1}{\sfdefault}{}{\itdefault}

\DeclareMathAlphabet{\mathsfsl}{T1}{\sfdefault}{}{\sldefault}
\SetMathAlphabet{\mathsfsl}{normal}{T1}{\sfdefault}{}{\sldefault}

\begin{document}

 $C$ default

 $\mathit C$ mathit

 $\mathcal C$ mathcal

 $\mathscr C$ mathscr

 $\mathsf{C}$ mathsf

$\mathsfbd{C}$ mathsfbd

$\mathsfbdit{C}$ mathsfbdit

$\mathsfit{C}$ mathsfit

$\mathsfsl{C}$ mathsfsl

 $\bm C$ bm default

 $\bm{\mathcal{C}}$ bm mathcal

 $\bm{\mathscr{C}}$ bm mathscr

 $\bm{\mathit{\mathsf{C}}}$ bm mathit mathsf

$\bm{\mathsf{C}}$ bm mathsf

$\bm{\mathsfbdit{C}}$ bm mathsfbdit

$\bm{\mathsfbd{C}}$ bm mathsfbd

$\bm{\mathsfit{C}}$ bm mathsfit

\end{document}

答案1

您可以尝试 stix,它有各种各样的字母:

在此处输入图片描述

\documentclass{article}

\usepackage{stix}

\begin{document}

$
C+
\mathit{C}+
\mathcal{C}+
\mathscr{C}+
\mathrm{C}+
\mathsf{C}+
\mathfrak{C}+
\mathbfscr{C}+
\mathbfit{C}
$

\end{document}

答案2

无需定义您已有的多种字体。对于脚本字体,您可以使用 STIX。

顺便说一句,\DeclareMathAlphabet或的任何论点都不\SetMathAlphabet应为空。

\documentclass{article}
\usepackage{amsmath}
\usepackage{bm}

\DeclareMathAlphabet{\mathsfit}{T1}{\sfdefault}{m}{sl}
\SetMathAlphabet{\mathsfit}{bold}{T1}{\sfdefault}{bx}{sl}

\DeclareFontEncoding{LS1}{}{}
\DeclareFontSubstitution{LS1}{stix}{m}{n}
\DeclareMathAlphabet{\mathscr}{LS1}{stixscr}{m}{n}
\SetMathAlphabet{\mathscr}{bold}{LS1}{stixscr}{b}{n}

\begin{document}

$CE$ default

$\bm{C}\bm{E}$ default bold

$\mathit{C}\mathit{E}$ mathit

$\bm{\mathit{C}}\bm{\mathit{E}}$ mathit bold

$\mathcal{C}\mathcal{E}$ mathcal

$\bm{\mathcal{C}}\bm{\mathcal{E}}$ mathcal bold

$\mathscr{C}\mathscr{E}$ mathscr

$\bm{\mathscr{C}}\bm{\mathscr{E}}$ mathscr bold

$\mathsf{C}\mathsf{C}$ mathsf

$\bm{\mathsf{C}}\bm{\mathsf{E}}$ mathsf bold

$\mathsfit{C}\mathsfit{E}$ mathsfit

$\bm{\mathsfit{C}}\bm{\mathsfit{E}}$ mathsfit bold

\end{document}

如果你不想\bm每次都输入,只需定义

\newcommand{\mathsfbdit}[1]{\bm{\mathsfit{#1}}}

在此处输入图片描述

答案3

事实证明,虽然 stix 不起作用,但 stix2 可以:

\documentclass{article}
\usepackage{stix2}[notext,not1]
\usepackage{amsmath}
%\usepackage{amssymb}
\usepackage{bm}
%\usepackage{mathrsfs}

\usepackage[colorlinks,hidelinks]{hyperref}
\usepackage{cleveref}
\usepackage{showlabels}
\showlabels{cite}
\showlabels{cref}
\showlabels{crefrange}

\begin{document}

$E C$ default

$\mathbb{E C}$ mathbb

$\mathbf{E C}$ mathbf

$\mathcal{E C}$ mathcal

$\mathfrak{E C}$ mathfrak

$\mathit{E C}$ mathit

$\mathrm{E C}$ mathrm

$\mathscr{E C}$ mathscr

$\bm{E C}$ bm default

$\bm{\mathbb{E C}}$ bm mathbb

$\bm{\mathbf{E C}}$ bm mathbf

$\bm{\mathfrak{E C}}$ bm mathfrak

$\bm{\mathit{E C}}$ bm mathit

$\bm{\mathrm{E C}}$ bm mathrm

$\bm{\mathscr{E C}}$ bm mathscr

$\bm{\mathsf{E C}}$ bm mathsf

$\pmb{E C}$ pmb default

$\pmb{\mathbb{E C}}$ pmb mathbb

$\pmb{\mathbf{E C}}$ pmb mathbf

$\pmb{\mathcal{E C}}$ pmb mathcal

$\pmb{\mathfrak{E C}}$ pmb mathfrak

$\pmb{\mathscr{E C}}$ pmb mathscr

$\cdot$ cdot

$\circ$ circ

$\odot$ odot

$\mathbin{\cdot}$ mathbin cdot

$\mathbin{\circ}$ mathbin circ

$\mathbin{\odot}$ mathbin odot

\end{document}

顺便说一句,虽然 stix 文档说将 stix 放在 amsmath 之前,但这会生成错误消息;使用 stix2,记录的放置工作正常。

相关内容