使用 eulervm 时如何倾斜变量?

使用 eulervm 时如何倾斜变量?

使用 fontspec 和 xetex,在文本模式下我可以定义:

\renewcommand{\textsl}[1]{{\fontspec[FakeSlant=0.2]{Neo Euler} #1}}

我使用 Neo Euler 获得了倾斜的字符(以伪造缺失的斜体)。

我想在数学模式下使用 eulervm 做同样的事情,并将普通数学变量重新定义为倾斜的。在指定我希望变量使用该格式之前,我甚至无法在数学模式下使用 fontspec,例如:

\newcommand{\mathsl}[1]{{\fontspec[FakeSlant=0.5]{Neo Euler} #1}}

当我有 $\mathsl{x}$ 时不会产生倾斜字体。关于如何在数学模式下获得倾斜文本有什么建议吗?

完成后,我该如何请求在数学模式下将所有标量变量排版为该格式?(大概使用 \DeclareMathAlphabet,但不确定如何使用)

谢谢!

答案1

我不知道我理解得是否正确。如果你的数学字体是 Neo Euler,只需使用unicode-math选项:

\documentclass{article}
\usepackage[math-style=upright]{unicode-math}

\setmathfont{Neo Euler}
\setmathfont[range=\mathit,FakeSlant=0.5]{Neo Euler}

\begin{document}
$xyz\ne\mathit{xyz}$
\end{document}

在此处输入图片描述

但效果实在很差:欧拉字体被特意设计成了直立的,倾斜的话会破坏其美感。

答案2

根据您的目的,Linux 字体 Libertine 和 Biolinum 可能可以作为替代品(尽管清教徒可能不同意)。

使用eulervm带有选项的包small有助于使 x 高度和笔划宽度更接近:

\documentclass{article}

\usepackage{amsmath}
\usepackage[small]{eulervm}

\DeclareMathAlphabet{\mathlib}{OT1}{LinuxLibertineT-OsF}{m}{it}
\DeclareMathAlphabet{\mathbio}{OT1}{LinuxBiolinumT-OsF}{m}{it}

\begin{document}

\begin{align}
xyz &\ne \mathlib{xyz}\\
\mathbio{Euler} &\ne Euler
\end{align}

\end{document}

相关内容