我正在尝试符合国际标准 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}
我认为结果肯定更糟。