我正在编写一些代码,想将其\usepackage[lighttt]{lmodern}
用于打字机字体。不知出于什么原因,在导入包后,我的数学模式字体会重置为计算机现代字体,而不是所需的和请求的newtxmath
字体。
梅威瑟:
\documentclass{article}
\pagestyle{empty}
\usepackage{newtxtext}
\usepackage{newtxmath}
\usepackage{amsmath}
% \usepackage[lighttt]{lmodern}
\DeclareSymbolFont{cmlargesymbols}{OMX}{cmex}{m}{n}
\let\sum\relax
\DeclareMathSymbol{\sum}{\mathop}{cmlargesymbols}{"50}
\DeclareSymbolFont{cmletters}{OML}{cmm}{m}{it}
\SetSymbolFont{cmletters}{bold}{OML}{cmm}{b}{it}
\DeclareSymbolFontAlphabet{\mathnormal}{cmletters}
\DeclareMathSymbol{\lambda}{\mathord}{cmletters}{"15}
\begin{document}
$exp$
\end{document}
如果我注释掉该lmodern
包,使用数学模式时我会得到左边的图像,这是我想要的,但我得到的是丑陋的打字机字体。如果我取消注释该行,我会在数学模式下得到 CMU 字体,但得到的是正确的打字机字体。该lmodern
包是否会在内部执行某些操作来重置数学模式字体?
答案1
不要加载lmodern
,只需发出必要的命令。
\documentclass{article}
\usepackage{newtxtext}
\usepackage{newtxmath}
\usepackage{amsmath}
% use Latin Modern Typewriter for tt
\renewcommand{\ttdefault}{lmtt}
% but light
\makeatletter
\let\lmtt@use@light@as@normal\@empty
\makeatother
\begin{document}
$a+b$
\texttt{abc \textbf{abc}}
\end{document}
答案2
lmodern.sty
我按照 Ulrike 的评论进行了调查。
问题是它不仅重新定义了打字机字体的符号字体。我创建了mylmodern.sty
删除这些更改(遵循 GUST 字体许可证):
\renewcommand{\ttdefault}{lmtt}
\DeclareOption{nomath}{\endinput}
\DeclareOption{variablett}{%
\renewcommand{\ttdefault}{lmvtt}
}
\DeclareOption{lighttt}{%
\let\lmtt@use@light@as@normal\@empty
}
\ProcessOptions\relax
\endinput