我想在文档中使用几种数学字体,其中一种是 Neo Euler。使用此字体,拉丁小写字母是直立的,但我想保留另一种字体的倾斜版本:
\setmathfont[version=euler,math-style=upright]{Neo Euler}
\setmathfont[version=bonummath,math-style=ISO]{TeX Gyre Bonum Math}
当使用 Neo Euler 时不会产生任何字母:
如果我交换一下这些线:
\setmathfont[version=bonummath,math-style=ISO]{TeX Gyre Bonum Math}
\setmathfont[version=euler,math-style=upright]{Neo Euler}
Bonum Math 变得直立:
如何修复?完整 MWE(我使用 LuaLaTeX):
\documentclass{article}
\usepackage{unicode-math}
\setmathfont[version=bonummath,math-style=ISO]{TeX Gyre Bonum Math}
\setmathfont[version=euler,math-style=upright]{Neo Euler}
\begin{document}
abc with Bonum: \mathversion{bonummath} $abc$
abc with Euler: \mathversion{euler} $abc$ and \textbf{symup} version: $\symup{abc}$
\end{document}
答案1
在现代工具链中
此示例将直立数学字母\symup
和设置\symbfup
为 Neo Euler。它保持数字和运算符名称不变。
\documentclass[varwidth, preview]{standalone}
\usepackage{mathtools}
\usepackage{unicode-math}
\defaultfontfeatures{Scale=MatchLowercase}
\setmainfont{TeX Gyre Pagella}[
Scale=1.0,
Ligatures={Common, Discretionary, TeX}]
\setmathfont{Asana Math}
\setmathfont[range={up/{Latin,latin,Greek,greek},
bfup/{Latin,latin,Greek,greek},
cal, bfcal, frak, bffrak},
script-features={},
sscript-features={}
]{Neo Euler}
\newcommand\upi{\symup{i}}
\newcommand\upe{\symup{e}}
\begin{document}
\begin{align*}
\upe^{\upi x} &= \cos{x} + \upi \sin{x} \\
\upe^{\upi \uppi} + 1 &= 0
\end{align*}
\end{document}
根据 ISO 样式,这将在 Neo Euler 中设置欧拉恒等式。在 Neo Euler 中,符号常数(例如 i、e 和 π)被竖直设置,其他所有内容均来自 Palatino 克隆。变量为斜体,数字和运算符名称与文本字体匹配。
在旧版 NFSS 中
\documentclass[varwidth, preview]{standalone}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage[utf8]{inputenc} % The default since 2018
\usepackage{mathtools}
\usepackage{newpxtext, newpxmath}
% If you also want to load Euler Script and Fraktur, you want mathalfa.
\DeclareSymbolFont{eulerup}{U}{zeur}{m}{n}
\DeclareMathSymbol{\uppi}{\mathalpha}{eulerup}{"19}
\DeclareMathSymbol{\upi}{\mathalpha}{eulerup}{"69}
\DeclareMathSymbol{\upe}{\mathalpha}{eulerup}{"65}
\begin{document}
\begin{align*}
\upe^{\upi x} &= \cos{x} + \upi \sin{x} \\
\upe^{\upi \uppi} + 1 &= 0
\end{align*}
\end{document}
此版本在 pdflatex 中提供类似的输出,但未定义单独的直立数学字母表。相反,它从中声明所需的单个直立常量eulervm
。编码记录在amsfonts
用户指南中,但与 OML 相同。
也可以通过加载正确的包(eulervm
或eulerpx
)将直立字体(Euler)设为默认字体,然后加载单独的\mathit
字母表。但是,LaTeX 内核没有定义与 分开的直立数学字母表\mathrm
,就像\symup
中一样unicode-math
。