我已经多次想制作一个页面矩阵,以便让 LaTeX 在“矩阵条目”之间对齐类似的内容元素。这可能没有多大意义,所以这里有一个例子:
如您所见,每个页面本质上都是内容元素的列表(这里,首先是文本,然后是对齐方程,然后是单行,另一个对齐方程等等)。但是,我希望类似的内容元素可以水平和垂直对齐。理想情况下,类似的含义由我而不是计算机决定,但如果这不可能,那就这样吧。
理想情况下,我们会有某种环境来制作矩阵,然后用页面填充它。如果有人想更改代码中的某个内容元素,这将有助于找回它。这种理想的系统还会有方法来指定需要进行的对齐,类似于环境align
使用该&
功能的方式。
唉,我还没有找到这样的环境,不过有一些更复杂的方法可以创建这种矩阵。
如果您有任何其他提示和技巧,我们将不胜感激。
答案1
有多种选择可以尝试,主要是
- 只需使用
\hspace
和\vspace
。需要很多操作。你不会想这么做的。就这样。 - 使用表格。这并不总是能带来令人满意的结果。单元格内的对齐并不总是很好,特别是当您想要指定水平和垂直对齐时。表格也不允许多行文本或“非正统”内容,例如
align
方程式。除此之外,由于语法的工作方式,您很快就会忘记页面中的内容与表格中的位置。 - 使用重复的小页面。我认为这是最好的方法。它仍然存在垂直对齐问题,但有时会有一些技巧可以解决这个问题,我将在下面分享。
如何使用重复小页面技术构建页面矩阵。
下面是结果图。代码如下:这里,因为它有点长。
基本思想是使用多个小页面来创建矩阵。
- 每个小页面的宽度将决定列的宽度,以及(与页面的文本宽度相比)列的数量。
- 您添加的小页面数量决定了您拥有的行数,因为 LaTeX 会不断填充页面行,直到代码中没有剩余行为止。
- 如果您希望矩阵比页面的文本宽度更宽,那么请考虑将所有页面嵌入到使用
\hspace
和定位的单个外部页面中\vspace
。然后,您将为该外部页面指定大于 的宽度,\textwidth
以便为内部页面提供必要的空间。 - 考虑为单独的内页使用独立文件。这样,矩阵本身就表现为外页,以及对内页的引用,以及矩阵整体的所有定位和布局。页面内的所有内容都保存在单独的文件中,这样更容易找到和更改。
上面的代码给出了所有这些的示例。
需要了解的一些一般技巧和事实:
- 确保每个小页面的垂直尺寸相同非常重要。如代码文档中的示例所示,如果小页面的长度不相等,它们似乎会在其底部对齐。
- 只要您所做的相当温和,并且所有列中的元素都具有相同的大小,那么列的长度就会自动相等,您就不会看到问题。
- 但是,如果所有元素的大小不相同(比如说,一列有 2 行矩阵,另一列有 4 行矩阵),那么您将必须通过添加额外空间来再次均衡长度。
- 没有简单的方法可以做到这一点,但在良好的情况下有一些简单的解决方案。添加
\strut
可确保您的内容元素至少为一行文本的高度。在其他情况下,您可以简单地使用添加自定义大小的支柱\vphantom{item from which you want its height.}
。我使用它将 3 行矩阵的大小与 4 行矩阵的大小相同。 - 在其他情况下,这需要使用
\vspace{length}
,这可以在文档中添加垂直空间。例如,要将某些内容向上移动而不弄乱任何其他对齐方式,您可以删除上方并添加下方相同的垂直空间,即使这可能并不总是产生预期的效果。这并不总是一种简化的体验,但话又说回来,这种方法并不完美。 - 检查线条是否真的起作用的一种方法是,
\hrulefill
在文档中添加大量的 。这样会创建水平线,如上例所示。