Unicode-math:用 \perp 替代 \bot

Unicode-math:用 \perp 替代 \bot

使用unicode 数学使用 LuaTeX。字体费拉数学缺少我使用的某些字形,特别是 的符号\bot。我知道我可以从其他字体中获取它:

\setmathfont[range={"022A5}]{DejaVu Math TeX Gyre}

但这样会使我的 PDF 因另一种字体而变得臃肿。或者,我可以重新定义命令\bot

\AtBeginDocument{\renewcommand{\bot}{\mathord{\perp}}}

但那恰恰是错误的层次——字形替换不应该需要修改 TeX 的输入语法。显而易见的解决方案是在加载等级,

  \directlua{
    fonts.handlers.otf.addfeature {
      name = "bottoperp",
      type = "substitute",
      data = {
        [0x22A5] = {0x27C2},
      },
    }
  }
  \setmathfont{Fira Math}[RawFeature=+bottoperp]

但这似乎没什么作用。

用以下方式替换字形的正确方法是什么LuaTeXunicode 数学

答案1

除了使用newunicodechar来激活字符之外,您还可以调整 的数学代码\bot以使用 的字形\perp

\documentclass{article}
\usepackage{unicode-math}

\setmainfont{Fira Sans}
\setmathfont{Fira Math}


\AtBeginDocument{%
  % For U+22A5, use class \mathord (0), family 0 and glyph U+27C2
  \Umathcode"22A5 0 0 "27C2
}

\begin{document}

$a\bot b$ or $a ⊥ b$

$a\perp b$ or $a ⟂ b$

\end{document}

在此处输入图片描述

答案2

只需使其活跃并将其定义为\bot,但将其重新定义为{\perp}

\documentclass{article}
\usepackage{unicode-math}
\usepackage{newunicodechar}

\setmainfont{Fira Sans}
\setmathfont{Fira Math}

% there is no \bot in Fira Sans
\AtBeginDocument{\renewcommand{\bot}{{\perp}}}
\newunicodechar{⊥}{\bot}

\begin{document}

$a\bot b$ or $a ⊥ b$

$a\perp b$ or $a ⟂ b$

\end{document}

在此处输入图片描述

图中显示(U+22A5) 被视为普通符号,而(U+27C2) 被视为关系符号。

相关内容