和unicode-math

和unicode-math

是否有一种通用的方法来改变特定符号的字体而无需切换包?

例如,假设我对整个文档使用 Computer Modern,但我希望“子集”运算符看起来与 mathabx 中一样。我该如何重新定义它以使其以这种方式出现?

答案1

有一种通用方法,但需要了解其他字体包的各个部分。然后,您可以只选择所需的部分。因此,对于您的特定示例,您可以执行以下操作:

\documentclass{article}
% Setup the matha font (from mathabx.sty)
\DeclareFontFamily{U}{matha}{\hyphenchar\font45}
\DeclareFontShape{U}{matha}{m}{n}{
      <5> <6> <7> <8> <9> <10> gen * matha
      <10.95> matha10 <12> <14.4> <17.28> <20.74> <24.88> matha12
      }{}
\DeclareSymbolFont{matha}{U}{matha}{m}{n}

% Define a subset character from that font (from mathabx.dcl)
% to completely replace the \subset character, you can replace
% \varsubset with \subset

\DeclareMathSymbol{\varsubset}{3}{matha}{"80}
\begin{document}

Computer Modern subset
\[
A \subset B
\]

\texttt{mathabx} subset

\[
A \varsubset B
\]

\end{document}

此代码是从mathabx包中复制的。

样本

答案2

还有另一种方法可以应对单个符号,而不会浪费宝贵的数学字母资源(只有 16 个)。

\usepackage{pifont}
\makeatletter
\newcommand\Pimathsymbol[3][\mathord]{%
  #1{\@Pimathsymbol{#2}{#3}}}
\def\@Pimathsymbol#1#2{\mathchoice
  {\@Pim@thsymbol{#1}{#2}\tf@size}
  {\@Pim@thsymbol{#1}{#2}\tf@size}
  {\@Pim@thsymbol{#1}{#2}\sf@size}
  {\@Pim@thsymbol{#1}{#2}\ssf@size}}
\def\@Pim@thsymbol#1#2#3{%
  \mbox{\fontsize{#3}{#3}\Pisymbol{#1}{#2}}}
\makeatother

之后,人们可以选择一个特定的符号并给它起一个合理的名称,例如

\newcommand{\varsubset}{\Pimathsymbol[\mathrel]{matha}{"80}}

可选参数给出符号的类型,在本例中为二进制运算符号;第一个强制参数是字体系列的名称,第二个参数是字体中符号插槽的编号。

不幸的是,mathabx 不提供.fd文件,因此还必须按照Alan的回答中解释的那样声明该系列,但是,由于现在 mathabx 也是 Type1 格式,因此可以缩放它们:

\DeclareFontFamily{U}{matha}{\hyphenchar\font45}
\DeclareFontShape{U}{matha}{m}{n}{
  <-6> matha5 <6-7> matha6 <7-8> matha7
  <8-9> matha8 <9-10> matha9
  <10-12> matha10 <12-> matha12
  }{}

任何字体的任何符号都可以在数学中使用,并且它将在下标和上标中正确缩放。

答案3

unicode-math

Unicode 数学字体支持各种符号。其中许多符号只有在未使用 Unicode 字体时才可使用补充包。

unicode-math软件包可让您加载这些 Unicode 数学字体。TeXlive 中提供了一些字体,例如 Latin Modern Math,它是流行lmodern软件包的 Unicode 端口。

可以在文档中找到由这些字体定义的符号列表每个符号(大多数符号)定义为unicode-math由 TeX.SX 的开发者unicode-math和用户 Will Robertson 编写。

\llangle让我们以和符号为例\rrangle。这些符号在 Latin Modern Math 中不可用,但在 XITS Math 中可用。要在使用 Latin Modern Math 作为主要数学字体时导入这些符号,必须使用选项range。该range选项接受 Unicode 插槽,或者为了更容易理解,接受符号的助记符名称。请务必加载自定义范围设置主数学字体。否则,您手工制作的符号集将被覆盖。

\documentclass{article}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\setmathfont[range={\llangle,\rrangle}]{XITS Math}
\begin{document}
$\llangle a \rrangle$
\end{document}

在此处输入图片描述

答案4

康特克斯 MkIV

在 ConTeXt 中,您可以使用\definefontfallback加载来自不同字体的符号。您可以提供 Unicode 插槽或整个字符范围,例如lowercasescript。助记符名称是不是不幸的是,这是可能的。

在示例中,我们从 XITS Math 中加载胡须括号,因为它们在 Latin Modern Math(默认数学字体)中不可用。

\definefontfallback [xits-fallback] [file:xits-math.otf] [023B0,023B1]

\definefontsynonym [MathRoman] [modern] [fallbacks=xits-fallback]

\starttext

$\lmoustache a \rmoustache$

\stoptext

在此处输入图片描述

相关内容