xetex 中的 \mathbf 问题

xetex 中的 \mathbf 问题

我正在使用 xelatex 以梵文排版数学文档。我在 中遇到了问题\mathbf。我正在使用 velthuis 字体映射。在 中\mathbf,我得到的是梵文字符。但是,通常的数学字体是可以的。这是一个 MWE。

  \documentclass{article} 
  \usepackage{amssymb}
  \usepackage{fontspec}
  \setmainfont[Script=Devanagari,Mapping=velthuis]{Annapurna SIL}
  \newfontfamily\eng{Times New Roman}
  \begin{document}
  yah ek
  udaaharan hai|| 
  {\eng This is a MWE.}     $\mathbf{i}$, $i$
  \end{document}

答案1

如果我 (a) 加载unicode-math而不是fontspec和 (b) 使用\symbf而不是\mathbf,我不会遇到任何问题。

在此处输入图片描述

% !TEX TS-program = xelatex
\documentclass{article} 
\usepackage{amssymb}
\usepackage{unicode-math}
\defaultfontfeatures{Path=/Users/mico/Library/Fonts/} % change this as needed
\setmainfont{AnnapurnaSIL-Regular.ttf}%
   [Script=Devanagari,Mapping=velthuis,
    BoldFont=AnnapurnaSIL-Bold.ttf]
\setmathfont{STIX2Math.otf} % or some other Times-compatible math font
   [Scale=MatchUppercase]
\newfontfamily\eng{Times New Roman.ttf}%
   [Path=/Library/Fonts/, % change this as needed
    Scale=MatchUppercase,
    BoldFont=Times New Roman Bold.ttf,
    ItalicFont=Times New Roman Italic.ttf,
    BoldItalicFont=Times New Roman Bold Italic.ttf]

\begin{document}
yah ek
udaaharan hai|| 

\textbf{yah ek
udaaharan hai|| }

{\eng This \textit{is} \textbf{an} \textbf{\textit{MWE.}}} 

$i$, $\symbf{i}$
\end{document}

答案2

我认为使用 unicode-math 并\symbf按照 Mico 的建议是正确且最佳的解决方案,因为您将获得正确的 unicode 字符。

但要解释一下具体的问题:fontspec默认情况下将主文本字体映射到\mathrm,但由于主字体使用了映射,因此您会得到错误的输出。

你可以使用该no-math选项加载 fontspec,然后它将使用默认的 Latin Modern 字体来执行\mathXX命令。或者你可以重置\mathrm为你喜欢的任何字体:

\documentclass{article}
  \usepackage{amssymb}
  \usepackage{fontspec}
  \setmainfont[Script=Devanagari,Mapping=velthuis]{Annapurna SIL}
  \setmathrm{Annapurna SIL}
  \newfontfamily\eng{Times New Roman}
  \begin{document}
  yah ek
  udaaharan hai||
  {\eng This is a MWE.}     $\mathbf{i}$, $i$
  \end{document}

在此处输入图片描述

相关内容