这个问题与这个问题相关:在数学模式下我可以使用哪些字体样式?
我想知道是否可以使用该命令\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}