如何使用 XeLaTeX 或 LuLaTeX 从不同的字体获取相同数学 Unicode 符号的两个版本?

如何使用 XeLaTeX 或 LuLaTeX 从不同的字体获取相同数学 Unicode 符号的两个版本?

让我们以我最喜欢的符号“定义上等于”≝为例。

这是我到目前为止尝试获取此符号的短版本和长版本的方法(是的,我希望在同一个文档中同时拥有这两个版本):

\documentclass{article}
\pagestyle{empty}
\usepackage[math-style=ISO]{unicode-math}
\setmainfont[Ligatures=TeX]{TeX Gyre Termes}
\setsansfont{TeX Gyre Heros}[Scale=0.88]%%% Somewhat ok scaling.
\setmonofont{TeX Gyre Cursor}%%% No explicit turning on ligatures for the monospaced font.
\setmathfont[Ligatures=TeX]{TeX Gyre Termes Math}
\setmathfont[Ligatures=TeX,Extension=.otf,range={"2A3E},BoldFont=XITSMath-Bold]{XITSMath-Regular}%%% The fat semicolon comes from XITS.
\newcommand*{\longDefiningEquals}{\mathrel{\text{\setmathfont{latinmodern-math.otf}[Ligatures=TeX,Extension=.otf,range={"225D}]$≝$}}}%%% long equality symbol that is used to define stuff
\begin{document}
\begin{gather*}
  R⨾

答案1

无需一次又一次地设置数学字体即可访问字体中的字符。

\documentclass{article}

\usepackage[math-style=ISO]{unicode-math}
\setmainfont{TeX Gyre Termes}
\setsansfont{TeX Gyre Heros}[Scale=MatchLowercase]
\setmonofont{TeX Gyre Cursor}[Scale=MatchLowercase]

\setmathfont{TeX Gyre Termes Math}
\setmathfont{XITS Math}[range={"2A3E},BoldFont=XITSMath-Bold] 
   
\newfontface\latinmath{latinmodern-math.otf}   
\newcommand*{\longDefiningEqualsB}{%
   \mathrel{{\mbox{\latinmath ≝}}}} 
  
\begin{document}
\begin{gather*}
 u≝v \\ 
 u\longDefiningEqualsB v \\
\end{gather*}
\end{document}

在此处输入图片描述

答案2

我看不出在同一文档中同时使用两者的理由,但肯定不是使用 的方式\setmathfont,它确实很多事情

相信(但不赞同)你的判断,即拥有两个不同风格的相同符号的副本,你使用的想法\text很好,但你只需要选择一个文本字体,没有什么可以阻止您将数学字体声明为文本字体。相反的做法是有问题的:为了对数学有用,OpenType/TrueType 字体必须有特殊的表格。

适当的命令是\newfontface

请注意,除了等宽字体外,您几乎不需要Ligatures=TeX,这是默认设置。加载字体时,请坚持一种选项样式。首选方式是选项字体名称。

\documentclass{article}

\usepackage[math-style=ISO]{unicode-math}

\setmainfont{TeX Gyre Termes}
\setsansfont{TeX Gyre Heros}[Scale=0.88]
\setmonofont{TeX Gyre Cursor}
\setmathfont{TeX Gyre Termes Math}

\setmathfont{XITSMath-Regular}[
  Extension=.otf,
  range={"2A3E},
  BoldFont=XITSMath-Bold,
]

\newfontface{\latinmodernmath}{latinmodern-math.otf}

\newcommand*{\longDefiningEquals}{\mathrel{\text{\latinmodernmath\symbol{"225D}}}}

\begin{document}

\texttt{``aa''}% see? No ligatures
$A\longDefiningEquals B$
$\scriptstyle A\longDefiningEquals B$ % scales!
\begin{gather*}
  R⨾

相关内容