请问一下各位大佬,如果我将数学字体替换为了stix
字体,但是由于其部分数学符号如积分号,求和号等较丑,我想将其数学符号替换为LaTeX
默认的cmu字体对应的数学符号有什么办法能做到呢?
你提问中的 cmu
疑似拼写有误? 回到问题本身:是这样的,你可以从原始的 Computer Modern math
中把 \int
, \sum
这两个符号给 偷过来. 具体的示例如下:
% TeX-Program: pdflatex
\documentclass{article}
\usepackage{stix}
\DeclareSymbolFont{cmmlargesymbols}{OMX}{cmex}{m}{n}
\DeclareMathDelimiter{\Newint}{\mathop}{cmmlargesymbols}{"52}{cmmlargesymbols}{"5A}
\DeclareMathDelimiter{\Newsum}{\mathop}{cmmlargesymbols}{"50}{cmmlargesymbols}{"58}
\begin{document}
stix style int $\int_a^b$ and sum $\sum_a^b$:
\[
\int_{a}^{b} x \;\mathrm{d}x = \sum_{i=1}^{\infty}\frac{x^2}{2} + C
\]
computer modern math style int $\Newint_a^b$ and sum $\Newsum_a^b$:
\[
\Newint\nolimits_{a}^{b} x \;\mathrm{d}x = \Newsum_{i=1}^{\infty}\frac{x^2}{2} + C
\]
\end{document}
编译结果:
- 当然,你可以无脑使用
unicode-math
这个宏包,不过就需要使用xetex
了,我这个方案的话,你可以在pdftex
下进行编译.- 目前这个
偷过来的方式比较的粗糙, 如果有后续要求,请继续提问
您好,我想要所有的数学符号,如int,sum,langle,rangle, sqrt等等,都变成Computer Modern math的字体,这样一个一个偷的话好像有点麻烦,能否有批量的办法呢?
@u25914 如果你实在是想要替换,你可以使用下面的模板把对应的 font table 打印出来:
结果如下:
然后找到你想要的符号,看上面那个表的 right 和 bottom 两个坐标来确定对应的 slot. 比如你想要的
\langle
"一小一大" 的 slot 编号分别为:"0A
,"2A
. 所以你在声明的时候就可以使用命令:text style
对应的符号就是前面的{cmmlargesymbols}{"0A}
,display style
对应的符号就是后后面的{cmmlargesymbols}{"2A}
;然后,仿照此方法,你就可以定义你自己想要替换的符号了.
备注
cmex
这个字体族的符号还是太少了,可以看看amsfont
提供的AMSa
和AMSa
两个字体族,用法参见文档amsdoc
. 还不够,那么你还可以用mathpazo
里面的PazoBB
,以及eulervm
里面的zeur
. 如果这还不够的话,可以参考unicode-math
文档,这个文档里面肯定有你满意的符号.\sqrt
之类的符号的声明方式是有一点不同的,比如\sqrt
默认的声明方式为:所以其余的符号你想要再从其它的字体中引入的话,也许你需要看更多的文档,如
fntguide
,fontsepc
,unicode-math
; 甚至是原始的\mathchar
\mathcode
之类的命令你都需要去了解,?这些东西不是一两句话说得清楚的.A survey of available free Mathematics fonts
这个文档,这个里面也许有你满意的字体. 但是我还是把方法写在这里, 如何取舍,看你自己.