我需要将每个 amsmath 方程式放在页面顶部。所以我习惯\noindent
这样做。除了 equation+split 环境之外,一切都很好。然后公式被放置得稍微高一点(比\vskip-\lineskiplimit
asmmath.sty 宏高(-3pt)\@display@init
。align+split 没问题。胶水是可丢弃物品,但它在盒子里,所以不会被丢弃。
....\glue(\topskip) 0.0
....\hbox(21.00012+16.0001)x430.00462, direction TLT
.....\vbox(21.00012+16.0001)x430.00462, direction TLT
......\glue -3.0
......\glue 0.0
梅威瑟:
\documentclass{article}
\usepackage[showframe,paperwidth=10cm,paperheight=5cm]{geometry}
\usepackage{amsmath}
\begin{document}
\noindent
\[
\begin{split}
\left(a^{B^{B^{B}}}\right)
\\
bb
\end{split}
\]
\clearpage
\noindent
\begin{align}
\begin{split}
\left(a^{B^{B^{B}}}\right)
\\
bb
\end{split}
\end{align}
\end{document}
问题:
- 有没有办法测试我是否在页面顶部?然后我就可以解决这个问题
\vskip
。我试过领导者,但这非常棘手。 - 还有其他方法可以强制放置公式吗
\topskip
?
答案1
问题是
\noindent
\begin{align}
那里有一个段落分隔符。删除空白行。页面顶部的空间不会被删除,因为它不是垂直空间,而是一行空白段落。
等式前有空行:
无空行:
修正版本并添加
\showoutput
\showboxdepth5
日志(像你一样使用 lualatex)显示
....\glue(\topskip) 0.0
....\hbox(22.50012+17.5001)x199.16841, direction TLT
.....\glue(\tabskip) 80.22015
.....\hbox(22.50012+17.5001)x0.0, direction TLT []
显示对齐之前页面上没有任何内容。
答案2
使用领导者来测试我是否在页面顶部是否安全?专家们怎么看?之前我尝试检查\pagegoal
、\maxdimen
和\pagetotal
,但效果不是 100%。
\documentclass{article}
\usepackage[showframe,paperwidth=10cm,paperheight=5cm]{geometry}
\usepackage{amsmath}
\usepackage{etoolbox}
\makeatletter
%% leaders should be discarded at top of new page
\newif\if@top@of@page\@top@of@pagefalse
\def\check@top@of{%
\ifmmode
\else
\@top@of@pagetrue
\ifvmode
\cleaders\vbox to \z@{\@top@of@pagefalse}\vskip\z@
\else
\cleaders\vbox to \z@{\@top@of@pagefalse}\hskip\z@
\fi
\fi
}
%% Passing check to equations
\preto\equation{\check@top@of}
\expandafter\preto\csname equation*\endcsname{\check@top@of}
\def\@display@init#1{%
\global\dt@ptrue \spread@equation
\everycr{%
\noalign{%
#1%
\ifdt@p
\global\dt@pfalse
%% No negative skip if equation is on a top of the page
\if@top@of@page
\else
\vskip-\lineskiplimit
\vskip\normallineskiplimit
\fi
\else
\penalty\@eqpen \global\dspbrk@lvl\m@ne
\fi
}%
}%
}
%% don't add \topskip for equation
\appto\mathdisplay@push{\noindent}
\makeatother
\begin{document}
\[
\begin{split}
\left(a^{B^{B^{B}}}\right)
\\
bb
\end{split}
\]
\clearpage
\noindent
\begin{align}
\begin{split}
\left(a^{B^{B^{B}}}\right)
\\
bb
\end{split}
\end{align}
\end{document}
我已经用此代码解决了我的问题,因此我将其写为答案。