我想使用 newtxmath 来表示方程式中的字母。不幸的是,如果我只启用 newtxmath,我会发现 \lesssim 和 \lnsim 符号看起来太相似了。以下是示例:
\documentclass[12pt,varwidth]{standalone}
\usepackage{amssymb}
\usepackage{newtxmath}
\begin{document}
$a\lnsim b$ means $a<b$ and $a\nsim b$.
I'd like $a\lnsim b$ and $a\lesssim b$ to look different.
But also $\lnsim$ to be same size as $\le,\nsim,\ne,=$.
\end{document}
我发现如果我将 noamssymbols 选项添加到 newtxmath,我可以使用默认的(更清晰的) \lesssim 和 \lnsim 关系:
\usepackage[noamssymbols]{newtxmath}
不幸的是,我得到了一个奇怪的关系符号大小不匹配的问题。特别是,\lnsim 看起来与 < 和 \le 完全不成比例:
当然,我也可以完全去掉 newtxmath,但这样字母看起来就不那么好看了。(在我的实际文档中,文本字体是 times。)
我怎样才能从 newtxmath 中获取字母,但保留纯乳胶字体中的 <、=、\ne 等运算符?
答案1
首先提供一个粗略的解决方案,然后我会尝试说服你一个更现代的解决方案。
比我最初发布的修复方法更好,更简单。 用 重新调整运算符\scalebox
。
\documentclass[12pt,varwidth]{standalone}
\usepackage{amssymb}
\usepackage[noamssymbols]{newtxmath}
\usepackage{graphicx}
\let\oldlnsim\lnsim
\renewcommand{\lnsim}{\ensuremath\mathrel{\scalebox{0.8}{\ensuremath\oldlnsim}}}
\let\oldlesssim\lesssim
\renewcommand{\lesssim}{\ensuremath\mathrel{\scalebox{0.8}{\ensuremath\oldlesssim}}}
%% Etc.
\begin{document}
$a\lnsim b$ means $a<b$ and $a\nsim b$.
I'd like $a\lnsim b$ and $a\lesssim b$ to look different.
But also $\lnsim$ to be same size as $\le,\nsim,\ne,=$.
\end{document}
好吧,这是我说过要尝试说服您的另一个解决方案。
如果您阅读newtx
文档,您会发现作者 Michael Sharpe 非常坦诚地说明了他从哪里获得了这个软件包的零碎部分。他甚至说:“在我看来,Linux Libertine 中的材料排版比 Times 中相应的材料排版看起来更好。”因此,如果您喜欢他的设置,我们也可以在现代工具链中请求它们并获得其所有好处。包括自动缩放的字体、对数学字母表没有限制,以及从任何 Unicode 字体中选择任何字形作为默认字形的能力。
\documentclass[12pt,varwidth]{standalone}
\usepackage{amssymb}
\usepackage[math-style=TeX]{unicode-math}
%% Basically identical appearance to newtxmath, but all scaling is now
%% automatic.
\defaultfontfeatures{Scale=MatchLowercase}
\setmainfont{Linux Libertine O}
\setsansfont{TeX Gyre Heros}
\setmathfont{TeX Gyre Termes Math}
%% With one wrinkle: Unicode maps /mathcal and /mathscr to the same
%% code points, so we need to set /mathcal and /mathbfcal up
%% separately: Now we have more alphabets than before, and won’t
%% run out.
\setmathfont[range={\mathcal,\mathbfcal},StylisticSet=1,Scale=MatchUppercase]{XITS Math}
\begin{document}
$a\lnsim b$ means $a<b$ and $a\nsim b$.
I'd like $a\lnsim b$ and $a\lesssim b$ to look different.
But also $\lnsim$ to be same size as $\le,\nsim,\ne,=$.
\end{document}
这很简单,并且会得到一个比 更独特的运算符newtxmath
。不过,要真正得到你想要的东西,即amsmath
缩小符号,需要一些额外的技巧:
\documentclass[12pt,varwidth]{standalone}
\usepackage{amssymb}
\usepackage[math-style=TeX]{unicode-math}
%% Basically identical appearance to newtxmath, but all scaling is now
%% automatic.
\defaultfontfeatures{Scale=MatchLowercase}
\setmainfont{Linux Libertine O}
\setsansfont{TeX Gyre Heros}
\setmathfont{TeX Gyre Termes Math}
%% With one wrinkle: Unicode maps /mathcal and /mathscr to the same
%% code points, so we need to set /mathcal and /mathbfcal up
%% separately: Now we have more alphabets than before, and won’t
%% run out.
\setmathfont[range={\mathcal,\mathbfcal},StylisticSet=1,Scale=MatchUppercase]{XITS Math}
%% We can use the same trick to override any range of math characters---
%% such as the ones whose appearance you didn’t like. In this case,
%% you wanted them to look
%% like amsmath’s, but smaller.
\setmathfont[range={"22E6-"22E9},Scale=0.8]{XITS Math}
%% Since ≁ now looks out of place, change it, then change a number of
%% other tilde operators to match that:
\setmathfont[range={"223B-"223D,"2241-"224C}]{XITS Math}
\begin{document}
$a\lnsim b$ means $a<b$ and $a\nsim b$.
I'd like $a\lnsim b$ and $a\lesssim b$ to look different.
But also $\lnsim$ to be same size as $\le,\nsim,\ne,=$.
\end{document}