使用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]
但这似乎没什么作用。
用以下方式替换字形的正确方法是什么LuaTeX和unicode 数学?
答案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) 被视为关系符号。