-
由于 elegantbook 近期在更换字体设置时遇到了问题: ElegantLaTeX/ElegantBook#196 , 使用如下代码可以解决, 但是不是很清楚其原理, 想来询问一下, 感谢 SJTUThesis/texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-termes.def Lines 52 to 65 in b164d0f |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 6 replies
-
我的理解是将设置完 TG Termes 后的 |
Beta Was this translation helpful? Give feedback.
-
这里的道理其实很简单,以下是 \DeclareMathAlphabet{\mathsf}{\encodingdefault}{\sfdefault}{m}{n}
\DeclareMathAlphabet{\mathit}{\tx@enc}{\rmdefaultB}{m}{it}
\DeclareMathAlphabet{\mathtt}{\encodingdefault}{\ttdefault}{m}{n}
\DeclareSymbolFontAlphabet{\mathrm}{operators} 可以看到 termes 字体设置这段代码做的就是在局部设置 因为 另外很重要的一点是 |
Beta Was this translation helpful? Give feedback.
-
另外我在 tex.se 上获得了另一个设置的方法 https://tex.stackexchange.com/a/642789/180617 。我按照这个方法设置了一下字体,请问这样设置与 SJTUThesis 中的设置有什么优缺点呢?因为我最近也在为一些模板内的 \documentclass{article}
\usepackage[no-math]{fontspec}
\usepackage{newtxmath}
\setmainfont{TeXGyreTermesX}[
Extension = .otf,
UprightFont = *-Regular,
BoldFont = *-Bold,
ItalicFont = *-Italic,
BoldItalicFont = *-BoldItalic,
NFSSFamily = texgyretermesx,
]
\DeclareSymbolFont{operators}{TU}{texgyretermesx}{m}{n}
\DeclareMathAlphabet{\mathbf}{TU}{texgyretermesx}{b}{n}
\DeclareMathAlphabet{\mathit}{TU}{texgyretermesx}{m}{it}
\begin{document}
English, \textbf{English}, \textit{English} $ \mathrm{English}, \mathbf{English}, \mathit{English}, \sin x $
\end{document} |
Beta Was this translation helpful? Give feedback.
这里的道理其实很简单,以下是
newtxmath
设置字体的部分代码:可以看到
newtxmath
会使用当前的\encodingdefault
,\rmdefault
,\sfdefault
,\ttdefault
来设置operators
,\mathrm
,\mathsf
,\mathtt
字体。termes 字体设置这段代码做的就是在局部设置
\encodingdefault
,\rmdefault
,\sfdefault
,\ttdefault
为newtxtext
中的默认值,再加载newtxmath
包。(\RequirePackage[T1]{fontenc}
的主要作用就是\def\encodingdefault{T1}
)因为
ctex
包使用fontspec
来设置 CJK 字体。为了不在正文环境中混用 OpenType 和 Type 1 字体,SJTUThesis 统一使用fontspec
来设置正文中使用 OpenType 西文字体。因此我们不直接使用newt…