《计算动力学》原来用LaTex+CJK排版,近期在对《计算动力学》进行改版,拟改用xeLaTex,以便直接使用计算机系统提供的中文字库,而不需要用CJK。但改用xeLaTex编译时,多处出现错误信息:
! Internal error: bad native font flag in `map_char_to_glyph' (TexLive 2013)
如果用TexLive 2012编译,则错误信息为:! Internal error: bad native font flag。
经检查发现,该错误是由以下命令造成的:
\boldsymbol{\dot \omega}
\boldsymbol{\bar{\phi}}
\boldsymbol{\bar{\psi}}
交换\boldsymbol和\dot及\bar的顺序(即改为\dot{\boldsymbol{\omega}}、\bar{\boldsymbol{\phi}}和\bar{\boldsymbol{\psi}})后,错误消失。
另外,\boldsymbol{\dot r}命令虽然不报错,但生成结果不正确,改为\dot{\boldsymbol{r}}后正常。
总结:这一错误应该是xeTex的bug,\bar、\dot等使用的字体和\omega等字体冲突。虽然\bar、\dot等使用的字体和英文字母字体不冲突,但生成结果也不正确。解决方案是采用\dot{\boldsymbol{\omega}}形式的命令,即先用\boldsymbol,再用\dot和\bar。