\varmathbb 和包 txfonts 仅限于数学模式

\varmathbb 和包 txfonts 仅限于数学模式

这个问题与这个问题相关:在数学模式下我可以使用哪些字体样式?

我想知道是否可以使用该命令\varmathbb{},根据接受的答案需要包txfonts或包pxfonts(我使用前者),而不将字体的使用扩展到全部的文档(因此将计算机现代字体作为标准字体)。

非常感谢您的任何反馈。

答案1

使用 定义的字体newtxmath,并借助一些帮助(字符不在标准字体位置)。

\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}

% from newtxmath
\DeclareFontFamily{U}{ntxmia}{}
\DeclareFontShape{U}{ntxmia}{m}{it}{<-> ntxmia }{}
\DeclareFontShape{U}{ntxmia}{b}{it}{<-> ntxbmia }{}
\DeclareSymbolFont{lettersA}{U}{ntxmia}{m}{it}
\SetSymbolFont{lettersA}{bold}{U}{ntxmia}{b}{it}

\AtBeginDocument{\let\mathbb\varmathbb}

\ExplSyntaxOn
\NewDocumentCommand{\varmathbb}{m}
 {
  \tl_map_inline:nn { #1 }
   {
    \use:c { varbb##1 }
   }
 }
\cs_new_protected:Nn \__mathbb_define:Nn
 {
  \DeclareMathSymbol{#1}{\mathord}{lettersA}{#2}
 }
\cs_generate_variant:Nn \__mathbb_define:Nn {ce}
\tl_map_inline:nn { ABCDEFGHIJKLMNOPQRSTUVWXYZ }
 {
  \__mathbb_define:ce { varbb#1 } { \int_eval:n { `#1+67 } }
 }
\tl_map_inline:nn { abcdefghijklmnopqrstuvwxyz }
 {
  \__mathbb_define:ce { varbb#1 } { \int_eval:n { `#1+61 } }
 }
\DeclareMathSymbol{\varbbimath}{\mathord}{lettersA}{'270}
\DeclareMathSymbol{\varbbjmath}{\mathord}{lettersA}{'271}
\ExplSyntaxOff

\begin{document}

$\mathbb{A}\mathbb{B}\mathbb{C}\mathbb{R}\mathbb{Z}\mathbb{k}\mathbb{l}\mathbb{m}$

$\mathbb{ABCDEFGHIJKLMNOPQRSTUVWXYZklmn}$

$\varbbimath\varbbjmath$

\end{document}

在此处输入图片描述

旧答案(为仍在运行 TeX Live 2018 的用户保留)

\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}

% from newtxmath
\DeclareFontFamily{U}{ntxmia}{}
\DeclareFontShape{U}{ntxmia}{m}{it}{<-> ntxmia }{}
\DeclareFontShape{U}{ntxmia}{b}{it}{<-> ntxbmia }{}
\DeclareSymbolFont{lettersA}{U}{ntxmia}{m}{it}
\SetSymbolFont{lettersA}{bold}{U}{ntxmia}{b}{it}

\AtBeginDocument{\let\mathbb\varmathbb}

\ExplSyntaxOn
\NewDocumentCommand{\varmathbb}{m}
 {
  \tl_map_inline:nn { #1 }
   {
    \use:c { varbb##1 }
   }
 }
\tl_map_inline:nn { ABCDEFGHIJKLMNOPQRSTUVWXYZ }
 {
  \exp_args:Nc \DeclareMathSymbol{varbb#1}{\mathord}{lettersA}{\int_eval:n { `#1+64 }}
 }
\exp_args:Nc \DeclareMathSymbol{varbbk}{\mathord}{lettersA}{169}
\ExplSyntaxOff

\begin{document}

$\mathbb{A}\mathbb{B}\mathbb{C}\mathbb{R}\mathbb{Z}\mathbb{k}$

$\mathbb{ABCDEFGHIJKLMNOPQRSTUVWXYZk}$

\end{document}

在此处输入图片描述

相关内容