如何通过按字符序列对齐特定术语来交错方程式?

如何通过按字符序列对齐特定术语来交错方程式?

我需要交错差分方程组,以便前一行的递增索引出现在其上一行的相应索引下方。这已被证明具有挑战性,因为索引项出现在字符序列中,这会导致 LaTeX 在它们之间应用 & 或 && 时将本应为一个项的元素拆分。

下面显示的是前三个方程,它们很容易在等号处对齐。但是,我还想在 RHS 上对齐索引匹配的函数“u”,即“u_{1,j}”、“u_{2,j}”等。

输入 '\nonumber' 也很麻烦,这个环境不使用 * 来暂停编号是没有意义的。'{alignat*}{n} 在其他所有意义上是否与 '{align}' 相同?'n' 代表方程的数量还是对齐点的数量?(如果 '{alignat*}' 不能解决我的问题,请忽略此段。

还,

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[]{amsthm} 
\usepackage[]{amssymb} 
\usepackage[]{amsmath}
\usepackage{textcomp}
\usepackage{chngcntr}
\usepackage{graphicx}
\usepackage[export]{adjustbox}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usepackage{wrapfig}
\usepackage{physics}


\usepackage{listings}
\usepackage{xcolor}
\usepackage[T1]{fontenc}
\usepackage[numbered]{matlab-prettifier}


\lstset{frame=tb,
  language=Java,
  aboveskip=3mm,
  belowskip=3mm,
  showstringspaces=false,
  columns=flexible,
  basicstyle={\small\ttfamily},
  numberstyle=\tiny\color{gray},
  keywordstyle=\color{blue},
  commentstyle=\color{dkgreen},
  stringstyle=\color{mauve},
  breaklines=true,
  breakatwhitespace=true,
  tabsize=3

\begin{align}
\boldsymbol{u_{1,j+1}} &= 0 + \left(1-2\boldsymbol{r}\right)\boldsymbol{u_{1,j}} + \boldsymbol{r u_{2,j}}\nonumber\\
\boldsymbol{u_{2,j+1}} &= \boldsymbol{r}\boldsymbol{u_{1,j}} + \left(1-2\boldsymbol{r}\right)\boldsymbol{u_{2,j}} + \boldsymbol{r u_{3,j}}\nonumber\\
\boldsymbol{u_{3,j+1}} &= \boldsymbol{r}\boldsymbol{u_{2,j}} + \left(1-2\boldsymbol{r}\right)\boldsymbol{u_{3,j}} + \boldsymbol{r u_{4,j}}\nonumber\\
\nonumber\end{align}

结果应该类似于

在此处输入图片描述

非常感谢您的帮助。谢谢

答案1

在此处输入图片描述

使用alignat*;而不是amsmath我使用mathtools(对于\shortintertext)和粗体数学字体,我建议使用包\bm

\documentclass{article}
\usepackage{mathtools}
\usepackage{bm}

\begin{document}
    \begin{alignat*}{5}
\bm{u}_{1,j+1}
    & = 0 + (1-2 & \bm{r}) & \bm{u}_{1,j} + \bm{r u}_{2,j} &&    \\
\bm{u}_{2,j+1}
    & =          & \bm{r}~ & \bm{u}_{1,j} + (1-2
                        & \bm{r})& \bm{u}_{2,j} + \bm{r u}_{3,j}
\shortintertext{\hspace{8em}\dotfill\hspace*{3.5em}}
\bm{u}_{3,j+1}
    & = &  &            & \bm{r}~ & \bm{u}_{2,j} + (1-2\bm{r})\bm{u}_{3,j} + \bm{r u}_{4,j}
    \end{alignat*}
\end{document}

答案2

用这个很容易alignat*(注意带星号的版本没有数字)。这样就需要 5 个对齐点,因此需要 9 个 & 符号。我删除了所有不必要的包来解决手头的问题,并将 babel 的语言选项移至文档 cleass,自 3.10 版以来应该如此:

\documentclass[english]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{amsfonts, amssymb, amsmath}

\begin{document}

\begin{alignat*}{5}
\boldsymbol{u_{1,j+1}} &={}&0 +(1-2\boldsymbol{r})\boldsymbol{u_{1,j}} & &{}+ \boldsymbol{r u_{2,j}} &\\
\boldsymbol{u_{2,j+1}} &= & \boldsymbol{r}\boldsymbol{u_{1,j}} & &{} + (1-2\boldsymbol{r})\boldsymbol{u_{2,j}} & &{}+ \boldsymbol{r u_{3,j}} & \\
\boldsymbol{u_{3,j+1}} &= & & & \boldsymbol{r}\boldsymbol{u_{2,j}} & &{}+(1-2\boldsymbol{r})\boldsymbol{u_{3,j}} & & {}+ \boldsymbol{r u_{4,j}} &
\end{alignat*}

\end{document} 

在此处输入图片描述

答案3

垂直间隔array就足够了:

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

\begin{document}

\begin{equation*}
\renewcommand{\arraystretch}{1.5}
\setlength{\arraycolsep}{0pt}
\begin{array}{r >{{}}c<{{}} r<{{}} >{{}}c<{{}} r >{{}}c<{{}} ll}
u_{1,j+1}   & = & 0+(1-2r)u_{1,j} & + & ru_{2,j} \\
u_{2,j+1}   & = &        ru_{1,j} & + & (1-2r)u_{2,j} & + & ru_{3,j} \\
& \multicolumn{7}{c}{\;\dotfill\hphantom{{}+0}} \\
u_{N-1,j+1} & = & &&&&& ru_{N-2,j}+(1-2r)u_{N-1,j}+0
\end{array}
\end{equation*}

\end{document}

在此处输入图片描述

相关内容