对齐多行方程

对齐多行方程

我试过这个代码,它创建了一个像这样的大空间

\begin{align}
&C^\text {UL} &= \log_2\left|{\bf I}_M + \frac{\rho_\text{ul}}{K}{\bf H}{\bf H}^\dagger\right|\\
%\end{align}
%\begin{align}
&C^\text {DL} &= \log_2\left|{\bf I}_K + \frac{\rho_\text{dl}}{M}{\bf H}{\bf H}^\dagger\right| \nonumber \\
&&= \log_2\left|{\bf I}_M + \frac{\rho_\text{dl}}{M}{\bf H}{\bf H}^\dagger\right|  
\end{align}

在此处输入图片描述

我怎样才能解决这个问题?

答案1

删除&行前面的

\documentclass{article}
\usepackage{amsmath}

\begin{document}
\begin{align}
C^\text {UL} &= \log_2\left|{\mathbf I}_M + \frac{\rho_\text{ul}}{K}{\mathbf H}{\mathbf H}^\dagger\right|\\
C^\text {DL} &= \log_2\left|{\mathbf I}_K + \frac{\rho_\text{dl}}{M}{\mathbf H}{\mathbf H}^\dagger\right| \nonumber \\
&= \log_2\left|{\mathbf I}_M + \frac{\rho_\text{dl}}{M}{\mathbf H}{\mathbf H}^\dagger\right|  
\end{align}
\end{document}

在此处输入图片描述

答案2

除了 (a) 删除&每行开头的有害符号和 (b) 用 替换{\bf ...}之外\mathbf{...},您可能还想 (c) 使用\mathrm而不是—— 以防万一这个等式出现在类似定理的环境中 —— 以及 (d) 降低绝对值栅栏的高度。对于最终目标,我建议您在包的宏\text的帮助下定义一个“绝对值”宏。\DeclarePairedDelimitermathtools

在此处输入图片描述

\documentclass{article}
\usepackage{mathtools} % for '\DeclarePairedDelimiter' macro
\DeclarePairedDelimiter\abs\lvert\rvert 
\begin{document}
\begin{align}
C^\mathrm{UL} &= \log_2\abs[\big]{\mathbf{I}_M 
                 + \frac{\rho_{\mathrm{ul}}}{K} \mathbf{H}\mathbf{H}^\dagger} \\
C^\mathrm{DL} &= \log_2\abs[\big]{\mathbf{I}_K 
                 + \frac{\rho_{\mathrm{dl}}}{M} \mathbf{H}\mathbf{H}^\dagger} \nonumber \\
              &= \log_2\abs[\big]{\mathbf{I}_M 
                 + \frac{\rho_{\mathrm{dl}}}{M} \mathbf{H}\mathbf{H}^\dagger}  
\end{align}
\end{document}

答案3

而不是align,而是使用alignat环境。alignat环境将需要一个额外的参数来表示您想要使用的左右列对的最大数量,但给出一个更大的数字并没有错。

\begin{alignat}{2}
    &C^\text {UL} &= \log_2\left|{\bf I}_M + \frac{\rho_\text{ul}}{K}{\bf H}{\bf H}^\dagger\right|\\
    &C^\text {DL} &= \log_2\left|{\bf I}_K + \frac{\rho_\text{dl}}{M}{\bf H}{\bf H}^\dagger\right| \nonumber \\
    &&= \log_2\left|{\bf I}_M + \frac{\rho_\text{dl}}{M}{\bf H}{\bf H}^\dagger\right|  
\end{alignat}

使用 alignat 渲染 对我来说,区别在于align想要使每列对之间的间距相等,而alignat将它们移动到对齐允许的尽可能靠近的位置,然后使整个对象居中。

确保对齐标记的位置,因为列的左右对齐特性否则会弄乱您的输出。

相关内容