ustctug / ustcthesis

LaTeX template for USTC thesis
https://gradschool.ustc.edu.cn/column/65
LaTeX Project Public License v1.3c
1.6k stars 396 forks source link

公式字体如何还原成原始的latex默认字体 #324

Closed JieJiang-Cosmology closed 2 years ago

JieJiang-Cosmology commented 2 years ago

检查

编译环境

描述问题

《研究生学位论文撰写手册》第 xx 页要求……而模板编译的结果是……

我在使用你们维护的3.3.1版本的毕业论文模版,发现里面的字体使用了多种选项都没办法还原成latex默认的字体(和花体),好像是因为使用了unicode-math这个包的原因。我想把这段公式

\begin{align} &\ddot{\delta\chi}_k + 3H\dot{\delta\chi}k + \frac{k^2}{a^2} \delta \chi k = \frac{\sqrt{2\epsilon{\chi}}}{M{\rm Pl}} \big[ \ddot{\phi}\delta\phi_k + \mathcal{S}_k \big], \label{EoMQchi}\ &\ddot{\delta\phi}_k + 3H\dot{\delta\phi}k + \left( \frac{k^2}{a^2} - \mathcal{M}{\rm eff}^2 \right) \delta\phi_k = 0 ~, \label{EoMQphi} \end{align}

实现成如截图的字体效果,

请问应该如何修改模版?

截图: 粘贴的图形-1

zepinglee commented 2 years ago

模板默认配置了 unicode-math + XITS Math 字体。

\documentclass[degree=doctor]{ustcthesis}
\ustcsetup{math-font = xits}

\begin{document}
\begin{align}
  &\ddot{\delta\chi}k + 3H\dot{\delta\chi}k + \frac{k^2}{a^2} \delta \chi _ k = \frac{\sqrt{2\epsilon{\chi}}}{M{\rm Pl}} \big[ \ddot{\phi}\delta\phi_k + \mathcal{S}_k \big],
  \\
  &\ddot{\delta\phi}_k + 3H\dot{\delta\phi}k + \left( \frac{k^2}{a^2} - \mathcal{M}_{\text{eff}}^2 \right) \delta\phi_k = 0 ~,
\end{align}
\end{document}
Screen Shot 2022-01-11 at 23 38 52

这主要是因为:

  1. 论文的西文字体要求使用 Times New Roman,而 LaTeX 的默认字体 Computer Modern (简称 cm)跟 Times 不搭配。比如

    \begin{equation}
    \sin x = \exp y \text{ iff. } f(a) = b \text{ and } \theta = \phi
    \end{equation}
    Screen Shot 2022-01-11 at 23 36 27
  2. 研究生的《撰写手册》要求数学符号按照 GB/T 3102.11—1993 的样式(虽然实际上可以能要求并不严格),但有些符号无法使用 cm 实现。

如果你坚持使用 cm 风格的,可以使用 NewComputerModern\ustcsetup{math-font = newcm}

Screen Shot 2022-01-11 at 23 44 16

或者使用原来的 Type 1 cm 字体:\ustcsetup{math-font = cm}

Screen Shot 2022-01-11 at 23 45 21
JieJiang-Cosmology commented 2 years ago

你好,谢谢解答。我尝试使用原来 Type 1 cm 字体,\ustcsetup{math-font = cm},但是显示无效值,请问该如何解决?

iShot2022-01-12 00 31 38

另外这样修改能恢复原来的积分号和偏微分号成为默认的斜体吗?

zepinglee commented 2 years ago

你好,谢谢解答。我尝试使用原来 Type 1 cm 字体,\ustcsetup{math-font = cm},但是显示无效值,请问该如何解决?

我写错了,应该是 \ustcsetup{math-font = none},感觉这里改成 cm 更好一些。

另外这样修改能恢复原来的积分号和偏微分号成为默认的斜体吗?

对,cm 只有斜体。其他 opentype math 字体可以设置 math-style = TeX

JieJiang-Cosmology commented 2 years ago

你好,我改成了\ustcsetup{math-font = none}后有其他的报错,如截图所示

iShot2022-01-12 01 10 36
zepinglee commented 2 years ago

这是因为 math-font = none 的原意是在数学字体方面不作任何配置,但是示例中使用了 unicode-math 的一些命令,所以会产生报错。

如果要让示例文档运行起来,需要额外进行以下配置:

\usepackage{amssymb}
\usepackage{bm}
\let\increment\Delta
\let\uppi\pi
\let\symup\mathrm
\let\symbf\bm
\let\symbfsf\mathsf

我稍后修改一下模板,新增选项 math-font = cm,会包含以上配置。

JieJiang-Cosmology commented 2 years ago

非常感谢!幸苦了。其实我觉得《手册》里面要求的西文字体是 Times New Roman 应该只对正文适用,公式使用 Computer Morden应该没有问题,因为如果要求公式的西文部分也是 Times New Roman 配置的话,也只是大致接近,并不是完全符合

zepinglee commented 2 years ago

非常感谢!幸苦了。其实我觉得《手册》里面要求的西文字体是 Times New Roman 应该只对正文适用,公式使用 Computer Morden应该没有问题,因为如果要求公式的西文部分也是 Times New Roman 配置的话,也只是大致接近,并不是完全符合

严格来说是的。但是但是 cm math 主要问题主要在于它的字形比 Times 细很多。可能在以中文为主要语言的论文中不是很明显(因为正文的中文字体通常比 Times 要细一些),但是在英文论文中,或者公示跟文字混合的情况下,就会显得不搭配。比如上面提到的例子。

Screen Shot 2022-01-11 at 23 36 27

一眼看过去 “iff.” 和 "and" 仿佛加粗了一样。

JieJiang-Cosmology commented 2 years ago

请问 \usepackage{amssymb} \usepackage{bm} \let\increment\Delta \let\uppi\pi \let\symup\mathrm \let\symbf\bm \let\symbfsf\mathsf 这一段是要加在哪个文件的

zepinglee commented 2 years ago

8748832 只需要设置

  math-style         = TeX,
  math-font          = cm,

就可以了。

JieJiang-Cosmology commented 2 years ago

8748832 只需要设置

  math-style         = TeX,
  math-font          = cm,

就可以了。

你好,我用原模版这么设置之后还是报错,

iShot2022-01-12 21 18 49

请问可以上传一下你说的这个修改后可以编译 math-font = cm 这个选项的模版吗

这是因为 math-font = none 的原意是在数学字体方面不作任何配置,但是示例中使用了 unicode-math 的一些命令,所以会产生报错。

如果要让示例文档运行起来,需要额外进行以下配置:

\usepackage{amssymb}
\usepackage{bm}
\let\increment\Delta
\let\uppi\pi
\let\symup\mathrm
\let\symbf\bm
\let\symbfsf\mathsf

我稍后修改一下模板,新增选项 math-font = cm,会包含以上配置。

sikouhjw commented 2 years ago

8748832 只需要设置

  math-style         = TeX,
  math-font          = cm,

就可以了。

你好,我用原模版这么设置之后还是报错,

iShot2022-01-12 21 18 49

请问可以上传一下你说的这个修改后可以编译 math-font = cm 这个选项的模版吗

这是因为 math-font = none 的原意是在数学字体方面不作任何配置,但是示例中使用了 unicode-math 的一些命令,所以会产生报错。 如果要让示例文档运行起来,需要额外进行以下配置:

\usepackage{amssymb}
\usepackage{bm}
\let\increment\Delta
\let\uppi\pi
\let\symup\mathrm
\let\symbf\bm
\let\symbfsf\mathsf

我稍后修改一下模板,新增选项 math-font = cm,会包含以上配置。

你没用过 github 吗?https://github.com/ustctug/ustcthesis/commit/874883287e5bce8777ca749e095b3d6deaac1310 已经是修改后的 cls,下载不就好了?

JieJiang-Cosmology commented 2 years ago

对不起,我不太会用,给你们添麻烦,打扰了。我下完那个文件之后已经编译成功,但好像对 \mathscr 这样的符号还没兼容。

sikouhjw commented 2 years ago

对不起,我不太会用,给你们添麻烦,打扰了。我下完那个文件之后已经编译成功,但好像对 \mathscr 这样的符号还没兼容。

  1. 『对数学字体不作任何配置』本身就没有做任何事
  2. 你用 article\mathscr 也需要加载 mathrsfs 宏包
  3. 所以 unicode-math 为什么好用呢,因为不用操心符号问题
zepinglee commented 2 years ago

对不起,我不太会用,给你们添麻烦,打扰了。我下完那个文件之后已经编译成功,但好像对 \mathscr 这样的符号还没兼容。

\mathscr 需要自行调用 mathrsfs 宏包。