![使用 \small 调整数学显示的大小会影响前一段的基线拉伸](https://linux22.com/image/358948/%E4%BD%BF%E7%94%A8%20%5Csmall%20%E8%B0%83%E6%95%B4%E6%95%B0%E5%AD%A6%E6%98%BE%E7%A4%BA%E7%9A%84%E5%A4%A7%E5%B0%8F%E4%BC%9A%E5%BD%B1%E5%93%8D%E5%89%8D%E4%B8%80%E6%AE%B5%E7%9A%84%E5%9F%BA%E7%BA%BF%E6%8B%89%E4%BC%B8.png)
这个问题与这个:
我有这个代码:
\documentclass[11pt]{article}
\pagestyle{empty}
\usepackage{blindtext}
\renewcommand{\baselinestretch}{1.1}
\usepackage{amsmath}
\makeatletter
\def\newmaketag{%
\def\maketag@@@##1{\hbox{\m@th\normalfont\normalsize##1}}%
}
\makeatother
\begin{document}
\flushbottom
\section{Section}
\blindtext
{\small%
\newmaketag\begin{equation}
\frac{2 x_{1} + 2 x_{2} + 2 x_{3} + 2 x_{4} + 2 x_{5} + 2 x_{6} + 2 x_{7} + 2 x_{8} + 2 x_{9} + 2 x_{10} + 2 x_{11} + 2 x_{12} + 2 x_{13} }{z}
\end{equation}}\relax
\end{document}
正如您在屏幕截图中看到的:
等式上方段落最后一行的基线拉伸是错误的。我该如何修复?
笔记。拜托,拜托,真的拜托!不要浪费你的时间(和我的)告诉我我不应该使用\small
调整方程大小(或建议我使用其他调整方程大小的技术)。我确实有自己的理由这样做(在某些情况下)。
答案1
原因应该很清楚:当开始显示数学公式时,TeX 会排版到目前为止的段落,而这发生在声明\small
已经执行时,因此基线跳过是与 相关的\small
。由于您想要的只是排版公式尺寸\small
,放在盒子里。
这是我的建议(我用\footnotesize
它来放大效果):
\documentclass[11pt]{article}
\usepackage{amsmath}
\usepackage{lipsum}
\makeatletter
\def\newmaketag{%
\def\maketag@@@##1{\hbox{\m@th\normalfont\normalsize##1}}%
}
\makeatother
\begin{document}
\section{Section}
\lipsum*[1]
{\footnotesize\newmaketag
\begin{equation}
\frac{2 x_{1} + 2 x_{2} + 2 x_{3} + 2 x_{4} + 2 x_{5}
+ 2 x_{6} + 2 x_{7} + 2 x_{8} + 2 x_{9} + 2 x_{10}
+ 2 x_{11} + 2 x_{12} + 2 x_{13} }
{z}
\end{equation}}
\lipsum*[1]
\begin{equation}
\mbox{\footnotesize$\displaystyle
\frac{2 x_{1} + 2 x_{2} + 2 x_{3} + 2 x_{4} + 2 x_{5}
+ 2 x_{6} + 2 x_{7} + 2 x_{8} + 2 x_{9} + 2 x_{10}
+ 2 x_{11} + 2 x_{12} + 2 x_{13} }
{z}
$}
\end{equation}
\end{document}
如果您喜欢冒险,可以使用对齐显示器进行以下操作:
\documentclass[11pt]{article}
\usepackage{amsmath}
\usepackage{lipsum}
\makeatletter
\newenvironment{smalleralign}[1][\small]
{\par\nopagebreak\leavevmode\vspace*{-\baselineskip}%
\skip0=\abovedisplayskip
#1%
\def\maketag@@@##1{\hbox{\m@th\normalfont\normalsize##1}}%
\abovedisplayskip=\skip0
\align}
{\endalign\ignorespacesafterend}
\makeatother
\begin{document}
\section{Section}
\lipsum*[1]
\begin{smalleralign}[\footnotesize]
a+b+c&=aaaaaaa+bbbbbbbbb+ccccccccc+ddddddddd \\
a+b+c&=aaaaaaa+bbbbbbbbb+ccccccccc+ddddddddd \\
a+b+c&=aaaaaaa+bbbbbbbbb+ccccccccc+ddddddddd \\
a+b+c&=aaaaaaa+bbbbbbbbb+ccccccccc+ddddddddd
\end{smalleralign}
\lipsum*[1]
\end{document}
答案2
我想扩展一下 Zarko 已删除的答案:您有一个解决方案,nccmath
它不仅包含一个\mfrac
命令,还包含一大堆类似的命令和环境(\mbinom
、、、、以及更多全局命令和环境,\mint
和)。\medint
\medop
mmatrix
\medmat
medsize
另一个解决方案,对于本公式来说更具体,是\splitfrac
来自mathtools
,与fleqn
环境相结合,nccmath
再次来自,使得一组方程式左对齐。
演示:
\documentclass[11pt]{article}
\pagestyle{empty}
\usepackage{blindtext}
\renewcommand{\baselinestretch}{1.1}
\usepackage{amsmath}
\makeatletter
\def\newmaketag{%
\def\maketag@@@##1{\hbox{\m@th\normalfont\normalsize##1}}%
}
\makeatother
\begin{document}
\flushbottom
\section{Section}
\blindtext
{\small%
\newmaketag\begin{equation}
\frac{2 x_{1} + 2 x_{2} + 2 x_{3} + 2 x_{4} + 2 x_{5} + 2 x_{6} + 2 x_{7} + 2 x_{8} + 2 x_{9} + 2 x_{10} + 2 x_{11} + 2 x_{12} + 2 x_{13} }{z}
\end{equation}}\relax
\end{document}