如何使用 unicode-math 获得直立的 \hbar?

如何使用 unicode-math 获得直立的 \hbar?

我希望\hbar我的文档中有一个直立的字形,我正在使用unicode-math。示例https://tex.stackexchange.com/a/527104/218142当我加载时似乎不起作用unicode-math。杆显然相对于移动h。为什么会发生这种情况,我如何\hbar在加载时将其直立unicode-math

我的 MWE:

% !TEX program = lualatexmk
% !TEX encoding = UTF-8 Unicode

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

\begin{document}
\renewcommand*{\hbar}{{\mathpalette\hbaraux\relax\symup{h}}}
\newcommand*{\hbaraux}[2]{\sbox0{\mathsurround=0pt$#1\mathchar"AF$}\mkern-1mu\lower.07\ht0\box0\mkern-8mu}

\( \hbar \scriptstyle\hbar \scriptscriptstyle\hbar \)
\end{document}

该 MWE 产生以下输出:

MWE 输出显示杆相对于 h 不固定

答案1

你不需要手工构建东西,你想要 U+0127 ħ

在此处输入图片描述

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

\begin{document}
\renewcommand*{\hbar}{\mathrm{^^^^0127}}

 \( \hbar \scriptstyle\hbar \scriptscriptstyle\hbar \)
\end{document}

答案2

你可以创作角色,但必须以正确的方式进行:

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

\makeatletter
\AtBeginDocument{%
  \DeclareRobustCommand{\hbar}{{\mathpalette\hbar@\relax\symup{h}}}%
}
\newcommand*{\hbar@}[2]{%
  \makebox[0pt][l]{\raisebox{-0.07\height}{$\m@th#1\mkern-1mu\mathchar"AF$}}%
}
\makeatother

\begin{document}

\( \hbar \scriptstyle\hbar \scriptscriptstyle\hbar \)

\end{document}

在此处输入图片描述

相关内容