这个问题导致了一个新的方案的出现:
fixcmex
在写下我的组合学练习时,我发现二项式系数的分隔符没有按照amsmath
文档中所示显示。
通过后续的反复试验,我能够将文档的体积缩减为这个更简单且完全可编译的 MWE:
\documentclass[11pt]{article}
%
\usepackage{amsmath}
%
\makeatletter
%
\usepackage{lmodern}
\usepackage{lipsum}
%
\makeatother
%
\begin{document}
%
\lipsum[1]
\begin{equation}
2^k-\binom{k}{1}2^{k-1}+\binom{k}{2}2^{k-2}
\end{equation}
\lipsum[1]
%
\end{document}
这给出了(使用 TeXworks 0.44 在 MikTeX 2.9.4521 上更新 09/10/13)这个意想不到的结果:
虽然amsmath
文档显示,使用 MWE 内部加载的包,结果实际上是这样的:
从这里我们可以看到,第一个例子中的分隔符在垂直方向上有点拉伸,因为它们超出了 binom.coeff 中的参数。
更奇怪的是,当我注释该行时,\usepackage{lmodern}
示例中分隔符形状的结果与amsmath
文档完全相同:
\documentclass[11pt]{article}
%
\usepackage{amsmath}
%
\makeatletter
%
%\usepackage{lmodern}
\usepackage{lipsum}
%
\makeatother
%
\begin{document}
%
\lipsum[1]
\begin{equation}
2^k-\binom{k}{1}2^{k-1}+\binom{k}{2}2^{k-2}
\end{equation}
\lipsum[1]
%
\end{document}
输出:
从这里我推断问题出在 中lmodern
,但我想继续使用这个包并修复这个数学模式的奇怪“问题”。我是否错过了一些线索,或者这实际上是更新过程错误感染了amsmath
的分隔符控制?
答案1
lmodern
这是如何设置数学扩展字体的问题,通过说
\DeclareFontShape{OMX}{lmex}{m}{n}{%
<->sfixed*lmex10%
}{}
即完全我认为这是错误的,因为它破坏了amsmath
解决问题的设置。不幸的是,字体不提供不同于 10pt 的光学尺寸,因此您有一些策略
1. 使用fixcmex
包
\documentclass[11pt]{article}
\usepackage{amsmath}
\usepackage{lmodern}
\usepackage{fixcmex}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{equation}
2^k-\binom{k}{1}2^{k-1}+\binom{k}{2}2^{k-2}
\end{equation}
\lipsum[1]
\end{document}
免责声明。我编写了这个fixcmex
软件包来解决当前的问题。
2. 让我们amsmath
做主要工作
\documentclass[11pt]{article}
\usepackage{amsmath}
\usepackage{lmodern}
\DeclareSymbolFont{largesymbols}{OMX}{cmex}{m}{n} % use cmex rather than lmex
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{equation}
2^k-\binom{k}{1}2^{k-1}+\binom{k}{2}2^{k-2}
\end{equation}
\lipsum[1]
\end{document}
3. 加载exscale
或更好的是,由它定义的字体
\documentclass[11pt]{article}
\usepackage{amsmath}
\usepackage{lmodern}
\DeclareFontShape{OMX}{cmex}{m}{n}{%
<-7.5> cmex7
<7.5-8.5> cmex8
<8.5-9.5> cmex9
<9.5-> cmex10
}{}
\DeclareSymbolFont{largesymbols}{OMX}{cmex}{m}{n} % use cmex rather than lmex
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{equation}
2^k-\binom{k}{1}2^{k-1}+\binom{k}{2}2^{k-2}
\end{equation}
\lipsum[1]
\end{document}
4. 可lmex10
扩展
\documentclass[11pt]{article}
\usepackage{amsmath}
\usepackage{lmodern}
\DeclareFontFamily{OMX}{lmex}{}
\DeclareFontShape{OMX}{lmex}{m}{n}{%
<-> lmex10
}{}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{equation}
2^k-\binom{k}{1}2^{k-1}+\binom{k}{2}2^{k-2}
\end{equation}
\lipsum[1]
\end{document}
对于所有策略,分隔符大小的计算都会产生更好的结果。策略二和策略三非常相似;不同之处在于后者会缩放所有字体,即使是非标准大小,而前者仅使用固定大小 7、8、9、10、11 (10.95)、12、14 (14.4) 和 17 (17.28)。策略一等同于策略三(并且更易于加载)。
答案2
此答案依赖于重新定义以使用和包\binom
的功能。宏将使括号分隔符与使用堆叠的二项式内容的高度完全匹配。scalerel
stackengine
\scaleleftright
\stackanchor
二项式系数分量之间的垂直间隙是的可选参数\stackanchor
(当前设置为 1.8ex),系数括号的水平限制宽度作为的可选参数给出\scaleleftright
(当前设置为 1.5ex)。
\documentclass[11pt]{article}
%
\usepackage{amsmath}
\usepackage{scalerel}
\usepackage{stackengine}
%
\makeatletter
%
\usepackage{lmodern}
\usepackage{lipsum}
%
\makeatother
%
\begin{document}
%
\lipsum[1]
\begin{equation}
2^k-\binom{k}{1}2^{k-1}+\binom{k}{2}2^{k-2}
\end{equation}
\renewcommand\binom[2]{\stackMath\mathop{%
\scaleleftright[1.5ex]{(}{\stackanchor[1.8ex]{#1}{#2}}{)}}}
\begin{equation}
2^k-\binom{k}{1}2^{k-1}+\binom{k}{2}2^{k-2}
\end{equation}
\lipsum[1]
%
\end{document}
上面的图片是您发布的原始图片,而下面的图片是此处提出的修复方法。
答案3
我最近遇到了与您类似的问题,同时使用 11pt 字体大小现代(拉丁现代字体 (font) 包。在我使用 10pt 和 12pt 字体大小时,这种情况从未发生过(显然)。
解决方案是添加诺马特选择现代包,然后使用拉丁现代适用于所有文本,但将恢复为 AMS电脑现代为了数学。来自 OP 的代码:
\documentclass[11pt]{article}
%
\usepackage{amsmath}
%
\makeatletter
%
\usepackage[nomath]{lmodern}
\usepackage{lipsum}
%
\makeatother
%
\begin{document}
%
\lipsum[1]
\begin{equation}
2^k-\binom{k}{1}2^{k-1}+\binom{k}{2}2^{k-2}
\end{equation}
\lipsum[1]
%
\end{document}
这是我几天前开始使用的解决方案,直到我找到更好的解决方案。我没有发现方程式有什么重大差异。