![如何用 amsmath 进行网格排版?](https://linux22.com/image/247546/%E5%A6%82%E4%BD%95%E7%94%A8%20amsmath%20%E8%BF%9B%E8%A1%8C%E7%BD%91%E6%A0%BC%E6%8E%92%E7%89%88%EF%BC%9F.png)
按照答案中的建议这个问题我确实设定了一个巨大的负面\lineskiplimit
。然而,结果align
却对此很不满。所以我的问题是:您建议用什么来实现(至少部分)网格排版amsmath
?我说的“部分”是指,当页面上有很多类似定理的环境等时,我接受不遵守网格,但在只有文本/部分/内联数学的页面上,我更愿意使用网格。我相当害怕使用任何用于网格排版的包,因为在我使用的类中,我重新定义了很多 LaTeX 内部函数(例如,我从头开始编写定理、部分、枚举,甚至与纯 LaTeX 不 100% 兼容)。(我知道这很冒险,但“虽然这很疯狂,但其中有方法”;)。)
所以现在我有几个选择。
重新定义对齐和相关项,暂时将其设置
\lineskiplimit
为 0pt。显然,这不是我想要做的。重新设置
\lineskiplimit
为 0pt,并且\smash
(或显示)手动所有“太大”的公式。
目前我倾向于 2.,但还有其他想法吗?
答案1
基本答案是,您必须让所有显示对象都适合网格的倍数,例如,标题、显示方程式等需要进行预处理和装箱,以便它们适合网格,同样,浮动和脚注也必须进行调整以满足空间要求。有很多软件包正在尝试这样做,例如grid.sty
来自 River Valley 或ltxgrid
RevTeX 的软件包,即使您不想使用这些软件包,也值得看看它们的作用和方法。
对于显示环境之类的东西,一种选择是将它们排版为\vbox
列宽,然后测量它们占用的垂直空间量。然后在顶部和下方添加所需的任何内容,以达到网格的倍数。然后棘手的部分是\prevdepth
正确设置,以便下一行文本仍然在网格上对齐。另一个问题是您可能希望将这些材料拆分到整个页面上。使用\unvbox
可能是一种选择,但只需确保您不会使用可能破坏网格的可拉伸胶水。
尝试一下\lineskiplimit
是可能的,并且在某种程度上是有用的,但如果将段落设置为负值,则意味着线条可以叠印(并且 TeX 不会为您检测到这一点)。
答案2
值得一提的是,ConTeXt 支持网格排版(\setuplayout[grid=yes]
)。对于内联数学公式,有一个\gform
宏可以将内联公式捕捉到网格中。请参阅细节决定成败手册中...嗯...细节。我附上了一页手册,其中显示了不同的格式选项。