Vector Align amsmath 无法按预期工作。除了使用“&”符号之外还有其他方法吗?

Vector Align amsmath 无法按预期工作。除了使用“&”符号之外还有其他方法吗?

我只是试图让每个元素与方程 1 中的相关符号对齐。如果问题太明显,请见谅。我尝试查看其他示例,但没有一个与我遇到完全相同的问题。

\documentclass{article}
\usepackage{amsmath}

\begin{document}
\maketitle


\begin{align}
    &\underline{s}_{t+1} &= s_t + &T_s \cdot \dot{\underline{s}_t} \\

  \begin{pmatrix}
    &\theta_{t+1} \\ 
    \dot{\theta}_{t+1} \\ 
    x_{t+1} \\ 
    \dot{x}_{t+1}
  \end{pmatrix}%_{4\times1}
    \mkern5mu &= \mkern5mu 
  \begin{pmatrix}
    \theta_t \\ 
    \dot{\theta}_t \\ 
    x_t \\ 
    \dot{x}_t   
    \end{pmatrix}
    \mkern5mu + \mkern5mu &T_s \mkern5mu \cdot
  \begin{pmatrix}
    \dot{\theta}_t \\ 
    \ddot{\theta}_t \\ 
    \dot{x}_t \\ 
    \ddot{x}_t  
  \end{pmatrix}
\end{align}

\end{document}

以下是我从这段代码中得到的结果。提前致谢! 在此处输入图片描述

编辑:我忘了说了,我希望两个方程都分配一个数字。显然,环境方程中的数组无法解决问题。

答案1

这种情况align不太适合。您可以使用alignat,但只要您只需要一个方程编号,我就会使用简单的array

\documentclass[twocolumn]{article} % twocolumn for smaller snapshot

\usepackage{amsmath}

\begin{document}

\begin{equation}
\begin{array}[t]{ % or [b] to align the number with the bottom equation
                 c
                 @{{}={}}
                 c
                 @{{} + \; T_s \; \cdot{}} % change the two \; to spacings you like
                 c
                }
\underline{s}_{t+1} & s_t & \underline{\dot{s}}_t \\[2ex]
\begin{pmatrix}
  \theta_{t+1} \\ 
  \dot{\theta}_{t+1} \\ 
  x_{t+1} \\ 
  \dot{x}_{t+1}
\end{pmatrix}%_{4\times1}
&
\begin{pmatrix}
  \theta_t \\ 
  \dot{\theta}_t \\ 
  x_t \\ 
  \dot{x}_t   
\end{pmatrix}
&
\begin{pmatrix}
  \dot{\theta}_t \\ 
  \ddot{\theta}_t \\ 
  \dot{x}_t \\ 
  \ddot{x}_t  
\end{pmatrix}
\end{array}
\end{equation}

\end{document}

在此处输入图片描述

您可以根据需要更改+T_s和之间的空格。另请注意,我使用了\cdot

\underline{\dot{s}}_t

而不是你的

\dot{\underline{s}_t}

后者会将点置于整个子公式的中心,而不是单独的下标s


编辑:如果两个方程都应该编号,那么就应该把所有东西都放在盒子里,让 TeX 测量它们的宽度。使用包可以使其更加自动化,eqparbox但我对它不熟悉。

\documentclass[twocolumn]{article} % twocolumn for smaller snapshot

\usepackage{mathtools}% loads amsmath

\begin{document}

% measure larger vector
\sbox0{$\begin{pmatrix}
  \theta_{t+1} \\ 
  \dot{\theta}_{t+1} \\ 
  x_{t+1} \\ 
  \dot{x}_{t+1}
\end{pmatrix}$}%
% measure thinner vector
\sbox1{$\begin{pmatrix}
  \dot{\theta}_t \\ 
  \ddot{\theta}_t \\ 
  \dot{x}_t \\ 
  \ddot{x}_t  
\end{pmatrix}$}
\begin{gather}
\mathmakebox[\wd0]{\underline{s}_{t+1}} = \mathmakebox[\wd1]{s_t} + \; T_s \; \cdot  \mathmakebox[\wd1]{\underline{\dot{s}}_t} \\[2ex]
\copy0
=
\mathmakebox[\wd1]{
\begin{pmatrix}
  \theta_t \\ 
  \dot{\theta}_t \\ 
  x_t \\ 
  \dot{x}_t   
\end{pmatrix}}
+ \; T_s \; \cdot \copy1
\end{gather}

\end{document}

在此处输入图片描述

答案2

您可以使用 eqparbox。要使用的标签对于要排版且宽度相同的框组应该是唯一的。

在此处输入图片描述

代码

\documentclass{article}
\usepackage{amsmath}
\usepackage{eqparbox}

\newcommand{\eqmath}[3][c]{%
  % #1 = alignment, default c, #2 = label, #2 = math material
  \eqmakebox[#2][#1]{$\displaystyle#3$}%
}

\begin{document}

\begin{align}
\eqmath{1A}{\underline{s}_{t+1}} &= 
\eqmath{1B}{s_t} + 
T_s \cdot \eqmath{1C}{\dot{\underline{s}}_t}
\\
\eqmath{1A}{
  \begin{pmatrix}
  \theta_{t+1} \\ 
  \dot{\theta}_{t+1} \\ 
  x_{t+1} \\ 
  \dot{x}_{t+1}
  \end{pmatrix}
} &=
\eqmath{1B}{
  \begin{pmatrix}
  \theta_t \\ 
  \dot{\theta}_t \\ 
  x_t \\ 
  \dot{x}_t   
  \end{pmatrix}
} + 
T_s \cdot \eqmath{1C}{
  \begin{pmatrix}
  \dot{\theta}_t \\ 
  \ddot{\theta}_t \\ 
  \dot{x}_t \\ 
  \ddot{x}_t  
  \end{pmatrix}
}
\end{align}

\end{document}

现在比较

在此处输入图片描述

并决定这样做更好,因为它假设读者可以阅读。代码

\documentclass{article}
\usepackage{amsmath}
\usepackage{eqparbox}

\begin{document}

\begin{gather}
\underline{s}_{t+1} = s_t + T_s \cdot \dot{\underline{s}}_t
\\
\begin{pmatrix}
  \theta_{t+1} \\ 
  \dot{\theta}_{t+1} \\ 
  x_{t+1} \\ 
  \dot{x}_{t+1}
\end{pmatrix} =
\begin{pmatrix}
  \theta_t \\ 
  \dot{\theta}_t \\ 
  x_t \\ 
  \dot{x}_t   
\end{pmatrix} +
T_s \cdot
\begin{pmatrix}
  \dot{\theta}_t \\ 
  \ddot{\theta}_t \\ 
  \dot{x}_t \\ 
  \ddot{x}_t  
\end{pmatrix}
\end{gather}

\end{document}

甚至更好,添加一些解释性文字:

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath,mathtools}

\begin{document}

\begin{equation}
\underline{s}_{t+1} = s_t + T_s \cdot \dot{\underline{s}}_t
\end{equation}
which becomes, in our particular case,
\begin{equation}
\begin{pmatrix}
  \theta_{t+1} \\ 
  \dot{\theta}_{t+1} \\ 
  x_{t+1} \\ 
  \dot{x}_{t+1}
\end{pmatrix} =
\begin{pmatrix}
  \theta_t \\ 
  \dot{\theta}_t \\ 
  x_t \\ 
  \dot{x}_t   
\end{pmatrix} +
T_s \cdot
\begin{pmatrix}
  \dot{\theta}_t \\ 
  \ddot{\theta}_t \\ 
  \dot{x}_t \\ 
  \ddot{x}_t  
\end{pmatrix}
\end{equation}

\end{document}

答案3

这是一个基于标准array环境的简单方法。您可以使用长度选择列之间的分隔\arraycolsep

在此处输入图片描述

\documentclass{article}

\usepackage{amsmath}


\begin{document}

\begin{equation}
  \setlength{\arraycolsep}{.3em}
  \begin{array}{ccccccc}
    \underline{s}_{t+1}
    &=& s_t &+& T_s &\cdot& \dot{\underline{s}_t}\\[1ex]
    \begin{pmatrix}
      \theta_{t+1}\\ 
      \dot{\theta}_{t+1}\\ 
      x_{t+1}\\ 
      \dot{x}_{t+1}
    \end{pmatrix}
    &=&
        \begin{pmatrix}
          \theta_t \\ 
          \dot{\theta}_t \\ 
          x_t \\ 
          \dot{x}_t   
        \end{pmatrix}
    &+& T_s  &\cdot&
        \begin{pmatrix}
          \dot{\theta}_t \\ 
          \ddot{\theta}_t \\ 
          \dot{x}_t \\ 
          \ddot{x}_t  
        \end{pmatrix}
  \end{array}
\end{equation}

\end{document}

答案4

如果您只需要一个方程编号,则可以将顶部方程堆叠在底部方程的元素上。在这里,我使用 ongstackL来获取方程之间的固定基线跳跃,我将其设置为38pt

\documentclass{article}
\usepackage{amsmath,stackengine}
\stackMath
\begin{document}
\renewcommand\stacktype{L}
\setstackgap{L}{38pt}
\begin{align}
  \stackon{\begin{pmatrix}
    \theta_{t+1} \\ 
    \dot{\theta}_{t+1} \\ 
    x_{t+1} \\ 
    \dot{x}_{t+1}
  \end{pmatrix}}{\underline{s}_{t+1}}
    &\stackon{{}={}}{=}
  \stackon{\begin{pmatrix}
    \theta_t \\ 
    \dot{\theta}_t \\ 
    x_t \\ 
    \dot{x}_t   
    \end{pmatrix}}{s_t}
     \stackon{{}+ T_s \cdot{}}{{}+ T_s \cdot{}}
  \stackon{\begin{pmatrix}
    \dot{\theta}_t \\ 
    \ddot{\theta}_t \\ 
    \dot{x}_t \\ 
    \ddot{x}_t  
  \end{pmatrix}}{\dot{\underline{s}_t}}
\end{align}
\end{document}

在此处输入图片描述

相关内容