使用 XeLaTeX 时,符号 \hbar 无法识别(但显示为“h”)

使用 XeLaTeX 时,符号 \hbar 无法识别(但显示为“h”)

我正在使用 XeLaTeX 和软件包fontspec,xunicode,xlxtra(我认为这是非常标准的)将我的文档处理成带有 TeX Gyre Pagella 字体的 PDF 文件。

我已经成功地这样做了很长一段时间,但是当使用标准 LaTeX 符号时\hbar,处理时会抛出一个错误

LaTeX 警告:命令 \hbar 在输入行 86 的数学模式下无效

该符号将改为显示为常规的“h”,并且与前一个字符有部分重叠。

这是一个最小的代码示例:

\documentclass{article}     
\usepackage{fontspec,xunicode,xltxtra}  
\defaultfontfeatures{Mapping=tex-text}
\setmainfont{TeX Gyre Pagella}
\begin{document}
hbar by itself:  $\hbar$\\
hbar with a preceeding character:   $o\hbar$
\end{document}

答案1

这似乎是 的一个错误xunicode

将计算机现代数学与 Pagella(Palatino)混合在一起不是一个好的选择(但这与问题无关)。

\documentclass{article}
\usepackage{mathpazo} % get Palatino math  
\usepackage{fontspec} % xunicode is not needed, nor xltxtra
\defaultfontfeatures{Ligatures=TeX} % syntax compatible with LuaLaTeX
\setmainfont{TeX Gyre Pagella}

% Magic formula for make \hbar not throwing a spurious message
% However, \hbar won't work in text mode, which should not be a problem
\expandafter\let\expandafter\hbar\csname ?-\string\hbar\endcsname
% End of magic code

\begin{document}
hbar by itself:  $\hbar$\\
hbar with a preceeding character:   $o\hbar$
\end{document}

答案2

您可以先放入 \newcommand{\hbarhorizline}{\mathchar'26\mkern-7mu h} 前导码,然后\hbarhorizline在公式中使用这个新命令。如果公式中有任何符号直接位于其前面,则需要在前面添加空格\hbarhorizline以避免重叠$G\ \hbarhorizline$

相关内容