sjtug / SJTUThesis

上海交通大学 LaTeX 论文模板 | Shanghai Jiao Tong University LaTeX Thesis Template
Apache License 2.0
3.34k stars 792 forks source link

数学公式环境设置 #555

Closed lsm000524 closed 3 years ago

lsm000524 commented 3 years ago

Capture

问题描述: 能否修改公式环境格式为英文数学排印习惯?现在的数学格式太僵硬了。

我发现在0.9.5版本及之前的模板中,公式排印还是比较正常的,效果如上图所示。之后的新版本就不放图了。我的论文里公式占比重非常大,所以没办法忽视格式美观的问题。

我现在暂时在用0.9.5来写。但是0.9.5似乎缺少一些新版本的新功能,比如论文封面。大概可以按照10.0.0的log把这个功能加上去,不过实在是下策。

如果能用新版本最好。管理员学长能不能指出代码里哪个地方决定了公式排版的格式?希望的格式就是接近普通LaTeX文档编译数学公式的效果(或者就改回0.9.5那样子)。谢谢。

系统信息:

日志信息:

N/A

AlexaraWu commented 3 years ago

图片直接拖到编辑区即可上传。

AlexaraWu commented 3 years ago

我觉得主要是字体风格的问题?新版本使用了 unicode-math 来处理数学字体。如果你想使用传统的 Latin Modern 风格的数学字体的话可以调用它的 OTF 版本。我试了一下,latinmodern-math.otfbb 字体有点怪,可以借用 TeX Gyre 的。将以下两行加到 sjtusetup.tex 里就可以了。

\setmathfont{latinmodern-math.otf}
\setmathfont{texgyretermes-math.otf}[range=bb]

修改过的效果:

Screen Shot 2020-11-25 at 21 15 10
lsm000524 commented 3 years ago

谢谢管理员学长!问题基本上解决了

但是我编译出来的和效果图有点不一样:\Delta和\Omega这些大写希腊字母变成斜体了,然后\setminus(差集符号)变成未定义的命令了,很奇怪。 Capture

我这次用了1.0.0rc7版本,还是overleaf,texlive2019和2020都试了,没有区别。

AlexaraWu commented 3 years ago

\setminus 没有是因为 latinmodern-math.otf 缺字,可以用 XITS Math 来补:

\setmathfont{latinmodern-math.otf}
\setmathfont{texgyretermes-math.otf}[range=bb]
\setmathfont{XITSMath-Regular.otf}[range=\setminus]

默认设置是 ISO 风格,大小写希腊字母都是斜体的,直立体的用加 up 前缀的命令:\upDelta\upOmega。 也可以改成传统的 TeX 风格,小写希腊字母是斜体,大写希腊字母是直立体:

\unimathsetup{
  math-style = TeX,
  bold-style = TeX,
}
zepinglee commented 3 years ago

Latin Modern Math 把差集符号做到了 U+2216,而 unicode-math\setminus 是 U+29F5,应该算是 bug。参考 https://tex.stackexchange.com/questions/140279/which-unicode-math-fonts-support-setminusunicode-math 文档。

AlexaraWu commented 3 years ago

U+2216 unicode-math 里是 \smallsetminus

zepinglee commented 3 years ago

U+2216 unicode-math 里是 \smallsetminus

Screen Shot 2021-01-21 at 18 36 53 Screen Shot 2021-01-21 at 18 37 14 Screen Shot 2021-01-21 at 18 37 04

LM 的是 \smallsetminus,STIX 和 XITS 是 \setminus