[Tex/LaTex] The symbol \hbar is not recognized (but shows up as “h”) when using XeLaTeX

xetex

I am using XeLaTeX with the packages fontspec,xunicode,xlxtra (which I believe is pretty standard) to process my documents into a PDF file with the TeX Gyre Pagella font.

I have been doing so successfully for quite some time, but when using the standard LaTeX symbol \hbar, upon processing an error is thrown

LaTeX Warning: Command \hbar invalid in math mode on input line 86

and the symbol appears instead as a regular "h" which partially overlaps with the previous character.

Here is a minimal code example:

\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}

Best Answer

It seems to be a bug with xunicode.

Mixing Computer Modern Math with Pagella (Palatino) is not a good choice (but this is not related to the problem).

\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}