Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

\hbar无法正常显示 #53

Closed
chao-song opened this issue Apr 5, 2020 · 4 comments
Closed

\hbar无法正常显示 #53

chao-song opened this issue Apr 5, 2020 · 4 comments

Comments

@chao-song
Copy link

用本模板编译出来的\hbar如下图:
image
同一台电脑上,简单写一个文档编译结果如下:
image

使用本模板时,具体是将zjuthesis.tex中设置为中文,专业为physics,其余用直接下载的模板中的命令,直接运行模板中的latexmk编译,即可发现这一问题

@muzimuzhi
Copy link

没细看原因。在载入 ctexrep 文档类之前,加一行

\PassOptionsToPackage{no-math}{fontspec}

能解决问题。具体源码位置在

\PassOptionsToPackage{AutoFakeBold}{xeCJK}
\LoadClass[
zihao=-4,
UTF8,
twoside
]{ctexrep}

@TheNetAdmin
Copy link
Owner

我测试了一下,似乎是Times New Roman字体的问题

\documentclass[
    zihao=-4,
    UTF8,
    twoside]{ctexrep}

\setCJKmainfont{FangSong}
\setmainfont{Times New Roman}
\begin{document}
    $\hbar$
\end{document}

给出了如下结果

2020-04-05_02-15

但删除\setmainfont{Times New Roman}后给出如下结果

2020-04-05_02-17

@muzimuzhi 提供的办法是可行的,我这就更新一下代码

@TheNetAdmin
Copy link
Owner

代码已经更新到master分支,最近会release新的版本

@muzimuzhi
Copy link

似乎是Times New Roman字体的问题

嗯。看了实现,

  • latex2e 里 \hbar 的原始定义是 \DeclareRobustCommand\hbar{{\mathchar'26\mkern-9muh}},对应字体编码 OT1 下 Computer Modern Roman 的八进制第 26 个符号,参考 texdoc encguide, sec. A.1
  • fontspec 不使用 no-math 选项、不加载 euler 或 lucida 相关字体包时,\hhar 被重定义为
    \renewcommand{\hbar}{{\mathchar"AF\mkern-9mu h}},相当于调用了当前正文字体的 U+00AF (Macron) 符号。

issue 报告的问题,是因为 Times New Roman 的 U+00AF 比较高,和 Latin Modern Math 的 h 不匹配。问题本质是字体搭配使用的事。

PS:xelatex 下更建议用 unicode-math 配置数学字体。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants