我正在使用 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$
。