![使用 flalign 进行多个对齐位置;alignat 不起作用](https://linux22.com/image/451895/%E4%BD%BF%E7%94%A8%20flalign%20%E8%BF%9B%E8%A1%8C%E5%A4%9A%E4%B8%AA%E5%AF%B9%E9%BD%90%E4%BD%8D%E7%BD%AE%EF%BC%9Balignat%20%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我使用 flalign* 是因为我希望所有内容从左侧开始而不是居中,但我遇到的问题是我想要 flalign 环境内的多个对齐位置(在本例中为 3),而我尝试过的任何方法都没有用。
这是我目前拥有的代码(MWE):
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\section{Test} \label{sec:floats}
\begin{enumerate}
\item
\begin{flalign*}
(BC)&\text{ For }n=4, b_4=4^2=16,c_4=4!=4\cdot3\cdot2\cdot1=24 \\[0.25em]
&\therefore b_4 \leq c_4 \hspace{2mm} \checkmark \\[0.25em]
(IH)&\text{ Asm for }k\geq4 \text{ that }k^2\leq k! \\[0.25em]
&\text{WTS: }(k+1)^2\leq (k+1)! \\[0.25em]
(IS)&\text{ Consider } n=k+1 \\[0.25em]
(k+1)!&=(k+1)\cdot k! \\[0.25em]
&\geq (k+1)\cdot k^2 &&\text{(IH)} &\\[0.25em]
&\geq (k+1)^2 \hspace{2mm}\blacksquare &&k^2\geq(k+1) &\\
\end{flalign*}
\end{enumerate}
\end{document}
结果是:
我需要的是
(k+1)!=(k+1)k!
与以
b_4
世贸中心
(‘for’、‘asm’ 和 ‘consider’ 故意多了一个空格)
同时下面的不等式也与等号保持对齐,并且显然不会影响这些线最右边的描述。
答案1
您的请求中有些内容不清楚。所以我尽力猜测了您想要什么。请参阅代码后面的注释以进行讨论。如果您可以详细说明您要完成的任务以及每个项目应该放在那里的一般准则,也许有人可以提供更好的代码,而不是那么黑客化。
\documentclass{article}
\usepackage{amsmath, amssymb}
\begin{document}
\section{Test} \label{sec:floats}
\begin{enumerate}
\item
\begin{flalign*}
(BC)&\text{ For }n=4, b_4=4^2=16,c_4=4!=4\cdot3\cdot2\cdot1=24 \\[0.25em]
&\therefore b_4 \leq c_4 \hspace{2mm} \checkmark \\[0.25em]
(IH)&\text{ Asm for }k\geq4 \text{ that }k^2\leq k! \\[0.25em]
&\text{WTS: }(k+1)^2\leq (k+1)! \\[0.25em]
(IS)&\text{ Consider } n=k+1 \\[0.25em]
&\begin{aligned}
(k+1)!&=(k+1)\cdot k! \\[0.25em]
&\geq (k+1)\cdot k^2 &\hspace{1in} &\text{(IH)} &\\[0.25em]
&\geq (k+1)^2 \hspace{2mm}\blacksquare &&k^2\geq(k+1)
\end{aligned} && % <----- see comment 3 below
\end{flalign*}
\end{enumerate}
\end{document}
讨论:
- 我添加了
amssymb
包以摆脱一堆未定义的控制序列。将来请确保您的 MWE 可以按原样编译(除非您的意图是显示错误消息)。 - 环境的目的
flalign
是不是创建一个“左对齐”对齐环境。这些字母fl
代表“全长”。它的作用是(来自手册)
环境 flalign(“全长对齐”)将方程式列之间的空间拉伸到最大可能的宽度,仅在边缘处留下足够的空间用于方程式编号(如果存在)。
- 特别是,如果你只有一个对齐点,那么
flaign
函数与没有什么不同align
。由于你似乎想要伪造一个flush left
环境,我&&
在最后插入了一个额外的内容,使其具有两个方程列(即使第二个是空的)。 - 顺便说一句,如果您只是希望显示的方程式在整个文档中与左侧对齐,那么您只需调用 选项
fleqn
即可amsmath
。 - 为了使块开始
(k+1)!
与 对齐,我将它放在的\therefore b_4
第一个对齐点之后(与 所做的点相同)。为了在块内创建内部对齐,我将整个块包裹在一个环境内。块内的对齐点与块外的对齐点分开计算,并且整个块被 视为一个单一实体。&
flalign
\therefore b_4
aligned
flalign
- 由于之前的注释,并且由于您没有指定注释的位置
(IH)
和k^2 \geq (k+1)
位置的任何规则,我只是填充了一些空间(上面代码中的 1 英寸)。您可能需要根据自己的喜好进行调整。 - 如果这只是更大代码片段的一部分,并且更大的代码片段需要对齐标签
(IH)
和k^2 \geq (k+1)
其他内容,那么您可能需要使用精心设计的alignedat
。 - 尝试猜测代码的意图,我认为我不会将整个代码作为一个巨大的数学显示!它可能应该作为某种列表环境来完成。
- 如果你发现自己
\\[0.25em]
每行都要输入,那么你可能只想更改行距。参见这个答案了解一些关于如何做到这一点的建议。