\hbar 无法在 XeLaTeX/LuaLaTeX 上使用 fontspec 显示

\hbar 无法在 XeLaTeX/LuaLaTeX 上使用 fontspec 显示

使用 时\usepackage{fontspec}\hbar无法正确显示。已在LaTeX2e <2018-04-01> patch level 5和上测试fontspec.sty 2018/07/30 vv2.6h

\documentclass{article}
\usepackage{fontspec}
\begin{document}
[$\hbar$]
\end{document}

使用 LuaLaTeX: 赫巴-lualatex

使用 XeLaTeX:

hbar-xelatex

我找到

  • 添加\usepackage{unicode-math}

或者

  • \usepackage[no-math]{fontspec}

可以解决这个问题,但我不确定哪个更好。

答案1

hbar 的定义非常依赖于编码。当 fontspec 更改运算符字体时,它会中断。

如果您不想切换到 unicode-math,您可以重新定义它:

\documentclass{article}
\usepackage{fontspec}

\begin{document}\pagestyle{empty}

\def\hbar{{\mathchar175\mkern-9muh}}
[$\hbar$]

\def\hbar{\mathit{^^^^0127}}

[$\hbar$]

\end{document}

在此处输入图片描述

答案2

旧式数学字体中用于条形的字符在 Unicode 中具有不同的代码。

\documentclass{article}
\usepackage{fontspec}

\renewcommand{\hbar}{{\mathchar"AF\mkern-9mu h}}

\begin{document}

[$h$]

[$\hbar$]

\sbox0{$h$}\the\wd0

\sbox0{$\hbar$}\the\wd0

\end{document}

在此处输入图片描述

宽度的差异略大于 0.00004 毫米,小于 的差异pdflatex。不过,横杆要高一点。

标准定义\hbar

\def\hbar{{\mathchar'26\mkern-9muh}}

\mathchar'26指的是数学组 0(标准文本字体)中八进制 26 号槽(十进制 22)中的字符。这与用于长音符的字符相同,在 OpenType 字体中,该字符位于槽0xAF。根据字体的不同,它可能更高或更低。

请注意,Unicode 有一个专门用于普朗克常数的插槽

U+201E 普朗克常数
U+201F 两个 PI 上的普朗克常数

并将unicode-math定义\hbar选择后者。

相关内容