我意识到已经有很多类似的问题,但是,在谷歌搜索网络和在这个网站上搜索了两周却没有结果之后,我也必须问一下这个问题。
我有一份文档,需要用 XeTeX 进行编译,其序言如下:
% Declaration
\documentclass[11pt,a4paper,oneside,titlepage,fleqn]{report}
% Main Packages
\usepackage{fontspec}
\defaultfontfeatures{Mapping=tex-text}
\usepackage{xunicode}
\usepackage{xltxtra}
\usepackage[intlimits]{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{unicode-math}
\usepackage{mathtools}
% Text Fonts
\setmainfont[
Path = /usr/share/fonts/google-noto/,
BoldFont = NotoSerif-Bold.ttf,
ItalicFont = NotoSerif-Italic.ttf,
BoldItalicFont = NotoSerif-BoldItalic.ttf
]{NotoSerif-Regular.ttf}
% Math Fonts
\setmathfont[
Path = /usr/share/fonts/xits/,
BoldFont = xits-mathbold.otf
]{xits-math.otf}
\setmathfont[
Path = /usr/share/fonts/google-noto/,
BoldFont = NotoSansGujarati-Bold.ttf,
range = "0A80-"0AFF
]{NotoSansGujarati-Regular.ttf}
现在我想在数学表达式中插入古吉拉特语范围内的字母作为数学符号。
如果我想以纯文本形式进行操作,我可以定义我想使用古吉拉特语,或者,如果我只想要一个特定的字母作为符号,我可以(并且确实)这样做:
\newfontfamily{\gujarati}[
Path = /usr/share/fonts/google-noto/,
BoldFont = NotoSansGujarati-Bold.ttf
]{NotoSansGujarati-Regular.ttf}
\newcommand{\ddha}{{\gujarati\symbol"0AA2}}
如果我只想在数学环境中插入文本,我可以使用命令
\text{\gujarati\symbol"0AA2}
但这与使用数学符号不同。
在数学中我尝试使用基于
\DeclareMathOperator
\DeclareMathSymbol
\mathchar
\UnicodeMathSymbol
\DeclareUnicodeCharacter
以及许多其他的,因为我搜索过网络和这个网站,但是都没有成功,要么是因为它们过于复杂,要么是因为它们不是用来识别unicode字形代码的。
那么,我怎样才能将unicode字形“0AA2”作为数学符号插入数学表达式中呢?
答案1
U+0AA2 不是数学符号,因此使用range
不起作用。一种简单的方法是使用\textnormal
。
\documentclass{article}
% Main Packages
\usepackage{amsmath}
\usepackage{unicode-math}
\usepackage{newunicodechar} % optional
% for Gujarati symbols
\newfontfamily{\gujarati}{FreeSerif}
\newcommand{\ddha}{\textnormal{\gujarati ^^^^0aa2}}
\newunicodechar{ઢ}{\ddha} % optional
\begin{document}
$a+\ddha+ઢ$
\end{document}
我最小化了代码,选择你需要的字体。另一方面,加载xunicode
和xltxtra
不再推荐(实际上,我的建议是不是加载它们)。
标记为“可选”的行允许您直接在公式中使用该字符。