通过 newtxmath 直立小希腊字母,无需替换数学字体

通过 newtxmath 直立小希腊字母,无需替换数学字体

我正在尝试符合国际标准 ISO 80000-2。该isomath软件包做得很好,但它没有解决缺少直立/罗马小写希腊字母的问题,而这些字母是 pi、克罗内克三角洲和 Levi-Civita 符号所必需的。这可以通过多种方式实现,但通常生成的希腊字母的字体与斜体字母明显不同(我使用的是标准 Computer Modern 字体)。

下面的代码实现了非常好的直立三角洲(所有希腊字母都可以用类似的方式实现)。

\documentclass{article}
\usepackage[libertine]{newtxmath}
\DeclareMathSymbol{\deltaup}{\mathord}{lettersA}{14}

\begin{document}
$\delta\deltaup$
\end{document}

也就是说,上面的代码\deltaup使用符号字体 lettersA 声明了所需的宏,而该字体本身由 加载newtxmath。这可以正常工作,但作为不良的副作用,加载newtxmath会替换文档中使用的数学字体,而我不想更改它。

答案1

您可以使用 Claudio Beccari 的基于计算机现代设计的 CBfonts。

\documentclass{article}
\usepackage[LGR,T1]{fontenc} % or OT1, if you prefer

\DeclareSymbolFont{upgreek}{LGR}{cmr}{m}{n}
\DeclareMathSymbol{\deltaup}{\mathord}{upgreek}{`d}
\DeclareMathSymbol{\piup}{\mathord}{upgreek}{`p}
\DeclareMathSymbol{\epsilonup}{\mathord}{upgreek}{`e}

\begin{document}
$\delta\deltaup$

$\pi\piup$

$\varepsilon\epsilonup$
\end{document}

在此处输入图片描述

一种效率较低但又不浪费数学字体系列的解决方案是textalpha

\documentclass{article}
\usepackage{amsmath}
\usepackage{textalpha}

\newcommand{\deltaup}{\text{\textdelta}}
\newcommand{\epsilonup}{\text{\textepsilon}}
\newcommand{\piup}{\text{\textpi}}

\begin{document}
$\delta\deltaup$

$\pi\piup$

$\varepsilon\epsilonup$
\end{document}

输出是一样的。

如果你想使用\usepackage[libertine]{newtxmath}加载时使用的直立希腊字母,那么这里有一个技巧

\documentclass{article}
\usepackage{amsmath}

\makeatletter
\let\iftx@libertine\iftrue
\let\iftx@minion\iffalse
\def\ntxmath@scaled{s*[1.02]}
\makeatother
\DeclareSymbolFont{upgreek}{U}{ntxmia}{m}{it}
\SetSymbolFont{upgreek}{bold}{U}{ntxmia}{b}{it}
\DeclareMathSymbol{\deltaup}{\mathord}{upgreek}{14}
\DeclareMathSymbol{\varepsilonup}{\mathord}{upgreek}{34}
\DeclareMathSymbol{\piup}{\mathord}{upgreek}{25}

\begin{document}
$\delta\deltaup$

$\pi\piup$

$\varepsilon\varepsilonup$
\end{document}

在此处输入图片描述

我认为结果肯定更糟。

相关内容