如何对齐普通文本;例如拆分矩阵、方程组、表格

如何对齐普通文本;例如拆分矩阵、方程组、表格

在我的例子中,我需要拆分多行对象(如矩阵、对齐方程或表格),然后一次输入一行。这些行之间会有纯文本。不应有回车符/换行符(没有\cr, \\)。应保留原始对齐方式(或接近原始对齐方式),这样如果没有散布的文本行,对象看起来就会像正常排版一样。

举个例子:假设 M 是一个 3×3 的矩阵,我想把它分成三行,这样

第 1 行

一段很长的文字

第 2 行

一段很长的文字

第 3 行

将会出现第 1、2、3 行对齐的情况,就像在原始矩阵中一样。

重申 1:我可以“预先输入设置”一个矩阵 M(它只有一行上的条目并且没有跨行的连接元素,例如矩阵分隔符、括号等),然后对输出中我需要的各个行进行“逐字复制粘贴”吗?

重申 2:我应该使用某种自制的制表符模板吗?只需将某些元素间隔一定距离即可。有什么建议吗?

重申 3:我该如何制作滚动文本程序如何模拟终端输出接受多行对齐结构,例如矩阵?

答案1

正如其他人所说,很难确切地知道你想要什么。也许更简单的方法就足够了,但对于精细的对准控制,我经常\phantom一起使用\makebox

这里有一个简短的例子来说明。请注意,为了更好地说明对齐,以下内容是在单个 中完成的align,但下面的 MWE 显示了如何在其他元素中使用相同的技术。请注意:

  • 在前三个方程中,每个项都与上面对应的项对齐。
  • 在第四个方程中,\arcsin(x)正好位于 之间的中心\sin(x) + h(x)

在此处输入图片描述

解释:

\phantom{}占用与给定参数相同的空间(水平和垂直)。还有一个 ,\vphantom{}它只占用垂直空间(零水平宽度),以及 ,\hphantom{}它只占用水平空间(零高度)。

因此,对于第二个方程,我们有:

\phantom{f(x) +{}} g(x)  &= \phantom{\cos(x) +{}}          {\sin(x)} \phantom{{}+ h(x)}

第一个\phantom{f(x) +{}}占用的空间与 一样多f(x) +{}。结尾{}是必需的,以便将+视为二元运算符。这也适用\phantom于此行中的其他两个 。还请注意, 是{\sin(x)}必需的,以消除原本应插入到 左侧的额外空间\sin(x)。必要的空间已通过 插入\phantom{}因此我们不希望将其插入两次。

第三个方程的情况与第二个方程非常相似。

在第四个等式中,我说明了如何相对于其他文本放置文本。这里我使用 ,\makebox[<width>][c]{<text>}它将给定的 放置<text>在指定的 所占的空间中<width>。第二个参数用于控制放置的 的对齐方式<text>。在本例中,我使用了[c]居中,但这也可以[r]用于右对齐或[l]左对齐。

\newcommand*{\PhantomText}[1]{\makebox[\widthof{$\sin(x) + h(x)$}][c]{$#1$}}%

为了计算精确的宽度,我\widthof{}使用包裹calc。因此,根据上述定义\PhantomText{\arcsin(x)}

代码:

\documentclass{article}
\usepackage{amsmath}
\usepackage{calc}

\newcommand*{\LongText}{Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet}% For dummy text

\newcommand*{\PhantomText}[1]{\makebox[\widthof{$\sin(x) + h(x)$}][c]{$#1$}}%

\begin{document}
\begin{align*}
             f(x) +    g(x)  &=          \cos(x) +              \sin(x)             + h(x) \\
    \phantom{f(x) +{}} g(x)  &= \phantom{\cos(x) +{}}          {\sin(x)} \phantom{{}+ h(x)}\\
    f(x)  \phantom{{}+ g(x)} &=          \cos(x) \phantom{{} +  \sin(x)}            + h(x) \\
    s(x)  \phantom{{}+ g(x)} &= \phantom{\cos(x) +{}} \PhantomText{\arcsin(x)}
\end{align*}
%
The following is just to illustrate how to use this with separate `align` envionments.
\begin{align*}
    f(x) + g(x) &= \cos(x) + \sin(x) + h(x)
\end{align*}
\LongText
\begin{align*}
    \phantom{f(x) +{}} g(x)  &= \phantom{\cos(x) +{}}          {\sin(x)} \phantom{{}+ h(x)}
\end{align*}
\LongText
\begin{align*}
    f(x) \phantom{{}+g(x)}  &= \cos(x) \phantom{{} + \sin(x)} + h(x)
\end{align*}
%
\begin{align*}
    s(x) \phantom{{}+ g(x)} &= \phantom{\cos(x) +{}} \PhantomText{\arcsin(x)}
\end{align*}
\end{document}

答案2

这取决于上下文,也许您只是在寻找\multicolumn{3}{p{\linewidth}{....} 在标准表格/数组中有效的方法。AMS 对齐(大多数)支持\intertext在行之间插入非对齐文本的命令。

相关内容