xetex 中方程式内外的标点符号字体不同

xetex 中方程式内外的标点符号字体不同

我正在使用 xelatex 创建亚美尼亚语文档。我有以下行

\setmainfont [Mapping=tex-text, Scale=MatchUppercase] {DejaVu Serif}

在我的 tex 文件中将文本的字体更改为 DejaVu Serif。但是方程式仍然是 Computer Modern。因此,方程式内外的标点符号(例如“,”)是不同的。这看起来有点丑陋,因为 DejaVu Serif 和 Computer Modern 中的逗号非常不同。我该如何解决这个问题?

答案1

mathspec软件包允许您设置数学文本字体。不幸的是,这实际上并不能解决标点符号问题。执行此操作的代码发布在此处:xetex/mathspec 中数学模式中的标点符号 这是一个例子。

% !TEX TS-program = XeLaTeX

\documentclass{article}
\usepackage{amsmath} % must be loaded before mathspec

\usepackage{mathspec}
\setmainfont [Mapping=tex-text, Scale=MatchUppercase] {DejaVu Serif}
\setmathsfont(Latin,Digits){DejaVu Serif}


% The following code is from https://tex.stackexchange.com/q/38711/2693
\makeatletter
\DeclareMathSymbol{,}{\mathpunct}{\eu@LatinLowercase@symfont}{`,}
\DeclareMathSymbol{.}{\mathord}{\eu@LatinLowercase@symfont}{`.}
\DeclareMathSymbol{<}{\mathrel}{\eu@LatinLowercase@symfont}{`<}
\DeclareMathSymbol{>}{\mathrel}{\eu@LatinLowercase@symfont}{`>}
\DeclareMathSymbol{/}{\mathord}{\eu@LatinLowercase@symfont}{`/}
\XeTeXDeclareMathSymbol{^^^^2026}{\mathinner}{\eu@LatinLowercase@symfont}{"2026}[\mathellipsis]
\makeatother


\begin{document}
This, a sample sentence, is some regular text.

\[
g(n) = 
\begin{cases}
\frac{2}{3}n & \text{if } n \equiv 0 \mod 3,\\
\frac{4}{3}n + \frac{1}{3} & \text{if } n \equiv 1 \mod 3,\\
\frac{4}{3}n - \frac{1}{3} & \text{if } n \equiv 2 \mod 3.
\end{cases}
\]
\end{document}

代码输出

相关内容