在我的例子中,我需要拆分多行对象(如矩阵、对齐方程或表格),然后一次输入一行。这些行之间会有纯文本。不应有回车符/换行符(没有\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
在行之间插入非对齐文本的命令。