我正在使用 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}