DejaVu Sans 中的“+-=,;...”数学字符(带有 mathspec)

DejaVu Sans 中的“+-=,;...”数学字符(带有 mathspec)

以下 MWE

\documentclass{minimal}
\usepackage{mathspec}
\setmainfont{DejaVu Sans}
\setmathsfont(Digits,Latin,Greek){DejaVu Sans}
\setmathrm{DejaVu Sans}
\begin{document}
\(\mathrm{e}^{\mathrm{i}\pi}=-1\) = -1
\end{document}

使用 xelatex 排版成

在此处输入图片描述

我如何将数学模式中的 = 和 - 符号转换为 DejaVu Sans?

答案1

您可以使用“标准”声明(请注意,在公式中我使用了 ASCII 连字符,外面是减号 U+2212)。

\documentclass{article}
\usepackage{mathspec}
\setmainfont{DejaVu Sans}
\setmathsfont(Digits,Latin,Greek){DejaVu Sans}
\setmathrm{DejaVu Sans}

\makeatletter
\DeclareMathSymbol{=}{\mathrel}{\eu@DigitsArabic@symfont}{`=}
\DeclareMathSymbol{+}{\mathbin}{\eu@DigitsArabic@symfont}{`+}
\XeTeXDeclareMathSymbol{-}{\mathbin}{\eu@DigitsArabic@symfont}{"2212}
\makeatother

\begin{document}

\(\mathrm{e}^{\mathrm{i}\pi}=-1+1-1\) = −1+1−1

\end{document}

在此处输入图片描述

您还可以添加

\XeTeXDeclareMathSymbol{^^^^2212}{\mathbin}{\eu@DigitsArabic@symfont}{"2212}

为了完整性。

更完整的版本(还有amsmath):

\documentclass{article}
\usepackage{amsmath}
\usepackage{mathspec}
\setmainfont{DejaVu Sans}
\setmathsfont(Digits,Latin,Greek){DejaVu Sans}
\setmathrm{DejaVu Sans}

\makeatletter
\DeclareMathSymbol{=}{\mathrel}{\eu@DigitsArabic@symfont}{`=}
\DeclareMathSymbol{+}{\mathbin}{\eu@DigitsArabic@symfont}{`+}
\DeclareMathSymbol{.}{\mathord}{\eu@DigitsArabic@symfont}{`.}
\DeclareMathSymbol{\ldotp}{\mathpunct}{\eu@DigitsArabic@symfont}{`.}
\DeclareMathSymbol{;}{\mathpunct}{\eu@DigitsArabic@symfont}{`;}
\DeclareMathSymbol{,}{\mathpunct}{\eu@DigitsArabic@symfont}{`,}
\DeclareMathSymbol{\cdot}{\mathbin}{\eu@DigitsArabic@symfont}{"00B7}
\DeclareMathSymbol{\cdotp}{\mathpunct}{\eu@DigitsArabic@symfont}{"00B7}
\AtBeginDocument{%
  \XeTeXDeclareMathSymbol{-}{\mathbin}{\eu@DigitsArabic@symfont}{"2212}%
  \XeTeXDeclareMathSymbol{^^^^2212}{\mathbin}{\eu@DigitsArabic@symfont}{"2212}%
}
\makeatother

\begin{document}

\(\mathrm{e}^{\mathrm{i}\pi}=−1+1−1\) = −1+1−1

\(;.,\ldots\cdots\)

\(,\dots,\) \(a+\dots+z\)

\end{document}

在此处输入图片描述

答案2

您可以使用以下

\documentclass{minimal}
\usepackage{mathspec}
\setmainfont{DejaVu Sans}
\setmathsfont(Digits,Latin,Greek){DejaVu Sans}
\setmathrm{DejaVu Sans}
% 0 (large) \mathop, 1 (binary) \mathbin, 2 (vary) \mathbin, 3 (relation) \mathrel, 4 (opening) \mathopen, 5 (closing) \mathclose, 6 (punctuation) \mathpunct, 7 (alphabetic) \mathalpha
\Umathcode`=="3 \csname symLatin:m:n\endcsname `=
\Umathcode`-="2 \csname symLatin:m:n\endcsname `-
\Umathcode`×="2 \csname symLatin:m:n\endcsname `× \def\times{×}
\begin{document}
\(\mathrm{e}^{\mathrm{i}\pi}=-1\) = -1
\end{document}

给予

字体中的连字符

按照要求。

但是,请注意,-并且U+002D HYPHEN-MINUS还有 U+2212 MINUS SIGN,您可能希望使用它:

字体减号

为此,将相关行替换为

\Umathcode`-="2 \csname symLatin:m:n\endcsname `−

(行中的最后一个字符是U+2212 MINUS SIGN)。

我从@egreg 的回答对我的问题XeLaTeX 中的符号

相关内容