如何用 amsmath 进行网格排版?

如何用 amsmath 进行网格排版?

按照答案中的建议这个问题我确实设定了一个巨大的负面\lineskiplimit。然而,结果align对此很不满。所以我的问题是:您建议用什么来实现(至少部分)网格排版amsmath?我说的“部分”是指,当页面上有很多类似定理的环境等时,我接受不遵守网格,但在只有文本/部分/内联数学的页面上,我更愿意使用网格。我相当害怕使用任何用于网格排版的包,因为在我使用的类中,我重新定义了很多 LaTeX 内部函数(例如,我从头开始编写定理、部分、枚举,甚至与纯 LaTeX 不 100% 兼容)。(我知道这很冒险,但“虽然这很疯狂,但其中有方法”;)。)

所以现在我有几个选择。

  1. 重新定义对齐和相关项,暂时将其设置\lineskiplimit为 0pt。显然,这不是我想要做的。

  2. 重新设置\lineskiplimit为 0pt,并且\smash(或显示)手动所有“太大”的公式。

目前我倾向于 2.,但还有其他想法吗?

答案1

基本答案是,您必须让所有显示对象都适合网格的倍数,例如,标题、显示方程式等需要进行预处理和装箱,以便它们适合网格,同样,浮动和脚注也必须进行调整以满足空间要求。有很多软件包正在尝试这样做,例如grid.sty来自 River Valley 或ltxgridRevTeX 的软件包,即使您不想使用这些软件包,也值得看看它们的作用和方法。

对于显示环境之类的东西,一种选择是将它们排版为\vbox列宽,然后测量它们占用的垂直空间量。然后在顶部和下方添加所需的任何内容,以达到网格的倍数。然后棘手的部分是\prevdepth正确设置,以便下一行文本仍然在网格上对齐。另一个问题是您可能希望将这些材料拆分到整个页面上。使用\unvbox可能是一种选择,但只需确保您不会使用可能破坏网格的可拉伸胶水。

尝试一下\lineskiplimit是可能的,并且在某种程度上是有用的,但如果将段落设置为负值,则意味着线条可以叠印(并且 TeX 不会为您检测到这一点)。

答案2

值得一提的是,ConTeXt 支持网格排版(\setuplayout[grid=yes])。对于内联数学公式,有一个\gform宏可以将内联公式捕捉到网格中。请参阅细节决定成败手册中...嗯...细节。我附上了一页手册,其中显示了不同的格式选项。

在此处输入图片描述

相关内容