最近遇到了调整latex中的数学字体的问题,虽然折腾一番发现我需要的就是默认字体(靓仔无语),但是还是了解到了不少内容,记录一下。
你想要的是什么字体?
1、要是有tex源码,又不想看cls文件,可以直接在你想查询的文本中用以下命令来显示字体信息(编译后可以看到)
\fontname\font
参考链接TeX/LaTeX 怎么查看当前字体信息?
2、找不出来的话,看一下overleaf的文档Font typefaces,主要是四个家族的字体:
- Computer Modern (标准latex里默认字体,不需要额外设置)
- Latin Modern
- Post Script Fonts
- TEX Gyre
3、更加详细的字体样式可参见🔗:The LaTeX Font Catalogue
4、其他相关🔗: 常见字体宏包、how to select math font in document
如果需要times风格的字体
Elsevier提供了一种解决方案,正如它的说明文档中所说会用到txfonts.sty
在cls中具体代码如下:
\DeclareOption{times}{\IfFileExists{txfonts.sty}% 该步骤判断是否存在txfonts.sty
{\AtEndOfClass{\RequirePackage{txfonts}%
\gdef\ttdefault{cmtt}%
\let\iint\relax
\let\iiint\relax
\let\iiiint\relax
\let\idotsint\relax
\let\openbox\relax}}{\AtEndOfClass{\RequirePackage{times}}}}%两个大括号,第一个是if成立使用,第二个是if不成立的时候使用
碎碎念:
1、elsevier这个cls文件只有在\documentclass后面声明times才会切换到times的字体,默认是computer modern roman的字体
2、一开始我以为这种情况文字和数学符号用的都是times new roman字体,去查了一下发现大家说times new roman里面缺少数学符号,最多是数学公式里面的文本使用了times new roman,至于数学符号只能用近似的times风格的字体实现LaTeX如何设置数学字体为Times New Roman?
其他参考链接:
在Mac中码LaTeX,如何修改数学字体到times风格?
setmathfont命令
这个应该是在unicode-math包里面用的,一开始没找到关于它里面的参数选项,搜了一下发现大家说这个兼容fontspec的参数选项Information About the Available Options Of The \setmathfont Command,这个命令可以用于自由设置字体,比如你自己有otf文件,可以用path对其进行调用
如果需要word默认的公式字体
word里面默认的公式字体是cambria,可下载相关otf文件,通过setmathfont命令进行设置
用了unicode-math之后mathbb和mathcal变得好奇怪?
想得到是左边,结果编译出来是右边?? 这个主要是因为unicode-math里面的字体和amssymb里面的字体不一致造成的,解决方法,在\begin{document}前面加几行命令:
\DeclareMathAlphabet{\mathcal}{OMS}{cmsy}{m}{n}
\let\mathbb\relax % remove the definition by unicode-math
\DeclareMathAlphabet{\mathbb}{U}{msb}{m}{n}
如果你有专门设置setmathfont,可以直接在cls里面为 \mathbb 更换字体,TeX Gyre Pagella Math 中提供了黑板体的支持:
\setmathfont{LatinModernMath-Regular}
\setmathfont[range={\mathbb,\mathcal}]{TeXGyrePagellaMath-Regular}
参考链接:
XeLaTeX, Latin Modern, \mathbb and \mathcal
使用 unicode-math 宏包时 \mathbb 黑板体字符的显示问题
如果需要更加花里胡哨的字体,可参阅链接:unicode-math: Double-struck math fonts
unicode-math一些不太一样的命令
比如LaTeX 传统使用粗正体表示向量和矩阵,所以只有一个 \mathbf 命令,但是这个命令对希腊字母无效。而国标要求使用粗斜体表示向量和矩阵,可以使用 bm 宏包的 \bm 得到粗斜体字母。unicode-math 可以设置 bold-style=ISO,并提供 \symbf 命令用于粗斜体的数学符号。
更加可参考链接:LaTeX 排版国标样式的数学符号