Skip to content
This repository has been archived by the owner on Apr 24, 2023. It is now read-only.

想要使用无衬线大写粗斜体怎么办?

YongjieLuo edited this page Mar 21, 2015 · 6 revisions

问题来源

按照概率论和随机过程的惯用符号,一个随机变量用大写字母表示,它的实现用小写字母表示。 一般的,矩阵和向量用大写字母表示,标量用小写字母表示。 当一个变量的含义是随机矩阵或者随机向量时,如果要写出该变量的概率密度函数f_{X}(X),那么上述表示方式就造成了混淆, 所以有的文献用无衬线大写粗斜体表示随机矩阵或者随机向量,用有衬线大写粗斜体表示它的实现。 UESTCthesis模板使用CM字体作为数学字体,但是CM字体的字形不够丰富,没有想要的无衬线大写粗斜体, 因此需要修改模板。

解决办法

解决办法是把CM字体更换为Latin Modern字体,LM字体的字形与CM几乎完全一样,但是具有更多的变体。

首先需要用MikTeK或者TeX Live的包管理器安装lm包。安装好后,开始修改模板。 用编辑器打开模板的文类定义文件 \UESTCthesis-master\source\uestcthesis.dtx ,

1.加入字体,找到

% \begin{macrocode} \LoadClass[cs4size,UTF8,fancyhdr,hyperref,fntef,openany]{ctexbook}[2011/03/11] % \end{macrocode} %\changes{v0.6.1}{2014/01/20}{修正所有正文的英文为Times字体。抄录环境中的英文使用打印机字体,并不能用Times字体。}

在下面添加

% \begin{macrocode} \RequirePackage{lmodern} % \end{macrocode} %\changes{v1.1.1}{2015/03/19}{默认的CM字体没有那么多变体。需要换字体。改为Latin Modern字体,字形与 CM 几乎完全一样,更多变体。} % \begin{macrocode} \DeclareMathAlphabet{\mathsfit}{OT1}{lmss}{m}{it} \SetMathAlphabet{\mathsfit}{bold}{OT1}{lmss}{bx}{it} % \end{macrocode}

2.将通用字体声明由cm打头改为lm打头,找到

% \begin{macrocode} \DeclareSymbolFont{symbols} {OMS}{cmsy}{m}{n} \DeclareSymbolFont{largesymbols}{OMX}{cmex}{m}{n} \DeclareSymbolFont{operators} {OT1}{cmr} {m}{n} \DeclareSymbolFont{letters} {OML}{cmm} {m}{it} \SetSymbolFont{operators}{bold}{OT1}{cmr} {bx}{n} \SetSymbolFont{letters} {bold}{OML}{cmm} {b}{it} \SetSymbolFont{symbols} {bold}{OMS}{cmsy}{b}{n} % \end{macrocode}

将c换成l,即

% \begin{macrocode} \DeclareSymbolFont{symbols} {OMS}{lmsy}{m}{n} \DeclareSymbolFont{largesymbols}{OMX}{lmex}{m}{n} \DeclareSymbolFont{operators} {OT1}{lmr} {m}{n} \DeclareSymbolFont{letters} {OML}{lmm} {m}{it} \SetSymbolFont{operators}{bold}{OT1}{lmr} {bx}{n} \SetSymbolFont{letters} {bold}{OML}{lmm} {b}{it} \SetSymbolFont{symbols} {bold}{OMS}{lmsy}{b}{n} % \end{macrocode}

3.加入检查语句,找到

\checkctexbookclass{2011/03/11}

在下面添加

\checkctexbookclass{lmodern}{2014/09/13}

保存后退出uestcthesis.dtx的编辑。

改动\UESTCthesis-master\example目录中的主文件thesis.tex ,加入自己isomath包

1.根据isomath文档[1]的说明,该包已经定义了 mathsfit mathsfbfit 等命令, 所以在

\documentclass[doctor,onlychapters]{uestcthesis}

下面直接加入

\usepackage{isomath}

2.测试,打开\UESTCthesis-master\example\chapters\math.tex文件,加入

$ \mathsfbfit{AX}, \bm{AX}, AX $

编译后可见效果。

参考文献: http://tug.ctan.org/macros/latex/contrib/isomath/isomath.sty.html#id17