如何在多个单独的对齐环境中对齐文本

如何在多个单独的对齐环境中对齐文本

编辑:我强烈反对我的问题重复性。我的问题与链接问题,并且链接问题中的答案不适用于我的问题。Bernard 对我的问题的回答回答了我的问题;不过,我要求你重新提出这个问题,以防有人遇到类似的问题并提出不同的解决方案。


我希望每个方程的条件像这样对齐

但是我的代码

\documentclass[a4paper,11pt,oneside]{paper}

\usepackage[fleqn]{amsmath} % Matematika
\usepackage{fontenc}
\usepackage{polyglossia}
    \setdefaultlanguage{czech}

\begin{document}

\textbf{Something A}
\begin{subequations}
\begin{alignat}{2}
&\beta_{a} = 2,00           && \qquad \text{for } f < 50\\
&\beta_{a} = 2,00 + 1 + 2   && \qquad \text{for } f > 50                                        
\end{alignat}       
\end{subequations}

\textbf{Something B}
\begin{subequations}
\begin{alignat}{2}
&\beta_{b} = 2,00                   && \qquad \text{for } f < 50\\
&\beta_{b} = 2,00 + 1 + 2 + 3 + 4   && \qquad \text{for } f > 50                                        
\end{alignat}       
\end{subequations}      

\textbf{Something C}
\begin{subequations}
\begin{alignat}{2}
&\beta_{c} = 2,00                           && \qquad \text{for } f < 50\\
&\beta_{c} = 2,00 + 1 + 2 + 3 + 4 + 5 + 6   && \qquad \text{for } f > 50                                        
\end{alignat}       
\end{subequations}

\end{document}

目前生产这个

我怎样才能更改代码以获得所需的输出?

我尝试将其放在\hfill之前\text{for } f < 50\qquad之后,但显然\hfill在对齐环境中不起作用。

答案1

自动对齐eqparbox。我擅自将方程式与符号对齐=,而不是与它们的左侧对齐。此外,我认为\qquad应该放在两列之间,而不是第二列的开头。这不会对当前的情况造成太大影响,但从语义的角度来看更令人满意。

\documentclass[a4paper,11pt,oneside]{paper}

\usepackage[fleqn]{mathtools} % Matematika
\usepackage{polyglossia}
    \setdefaultlanguage{czech}
\usepackage{eqparbox}
\newcommand{\eqmathbox}[2][M]{\eqmakebox[#1][l]{$\displaystyle#2$}}

\begin{document}

\textbf{Something A}
\begin{subequations}
  \begin{alignat}{2}
    \beta_{a} & = 2,00 & \qquad & \text{for } f < 50 \\
    \beta_{a} & = \eqmathbox{2,00 + 1 + 2 } & \qquad & \text{for } f > 50
  \end{alignat}
\end{subequations}

\textbf{Something B}
\begin{subequations}
  \begin{alignat}{2}
    \beta_{b} & = 2,00 & \qquad & \text{for } f < 50 \\
    \beta_{b} & =\eqmathbox{2,00 + 1 + 2 + 3 + 4} & \qquad & \text{for } f > 50
  \end{alignat}
\end{subequations}

\textbf{Something C}
\begin{subequations}
  \begin{alignat}{2}
    \beta_{c} & = 2,00 & \qquad & \text{for } f < 50 \\
    \beta_{c} & =\eqmathbox{2,00 + 1 + 2 + 3 + 4 + 5 + 6} & \qquad & \text{for } f > 50
  \end{alignat}
\end{subequations}

\end{document} 

在此处输入图片描述

答案2

只需将每个第一个子方程替换为,即可使所有三个子方程具有相同的宽度,例如\makebox[15em][l]{$<first subequation>$}

编辑:

可以预先选择最长的子方程,将其余所有子方程的宽度设置为它。例如:

\newlength\eqlength
\settowidth\eqlength{$\beta_{c} = 2,00 + 1 + 2 + 3 + 4 + 5 + 6$}

将最长子方程的宽度存储到寄存器\eqlength。然后,可以在 中使用该寄存器\makebox[\eqlength][l]{$...$}

\documentclass[a4paper,11pt,oneside]{paper}

\usepackage[fleqn]{amsmath} % Matematika
\usepackage{fontenc}
\usepackage{polyglossia}
    \setdefaultlanguage{czech}

\begin{document}

\textbf{Something A}
\begin{subequations}
\begin{alignat}{2}
&\makebox[15em][l]{$\beta_{a} = 2,00$}      && \qquad \text{for } f < 50\\
&\beta_{a} = 2,00 + 1 + 2                   && \qquad \text{for } f > 50                                        
\end{alignat}       
\end{subequations}

\textbf{Something B}
\begin{subequations}
\begin{alignat}{2}
&\makebox[15em][l]{$\beta_{a} = 2,00$}      && \qquad \text{for } f < 50\\
&\beta_{b} = 2,00 + 1 + 2 + 3 + 4           && \qquad \text{for } f > 50                                        
\end{alignat}       
\end{subequations}      

\textbf{Something C}
\begin{subequations}
\begin{alignat}{2}
&\makebox[15em][l]{$\beta_{a} = 2,00$}      && \qquad \text{for } f < 50\\
&\beta_{c} = 2,00 + 1 + 2 + 3 + 4 + 5 + 6   && \qquad \text{for } f > 50                                        
\end{alignat}       
\end{subequations}

\end{document}

在此处输入图片描述

相关内容