[Tex/LaTex] Adding multiple paragraphs between aligned equations

alignmathtoolsnumbering

Some people have asked about how to add multiple paragraphs (when \intertext and \shortintertext no longer work), a fix was proposed by Peter Grill here:

He wrote:

My first thought was to hack apart the result of an align and dole
out the lines one-by-one wherever you want them. Alas, align
produces a list of considerable complexity and it is not worth the
effort to unravel it (if that's even possible).

So I made my own alignment environment that, as far as I can tell,
does what you'd want align* to do but produces a very simple list.
My macro \ALineAgain then picks that list apart and drops the lines
one at a time wherever you ask.

Because the lines are not printed where the alignment is actually
given, it makes no sense to have an AlignAgain*; it never prints
equation numbers. Instead, the \ALineAgain macro takes a star that
suppresses the addition of an equation number.

The problem with this code is that the equation numbers seem to be messed up once you try referencing them. Below, I've added only a few lines to Peter's code (notably: \numberwithin{equation}{section}, two section commands, and then a single line at the very end that attempts to reference the two equations).

Rather than printing (1.1) and (1.2), it prints (1.1) and (1.1). There seems to be something wrong with the equations portion of the code. Can anybody spot the problem?

\documentclass{article}
% \usepackage{showframe}
\usepackage{amsmath}

\numberwithin{equation}{section}

% It's like {align}, but simple!
\newenvironment{SimpleAlign}
{%
 \let\\=\cr
 \tabskip 0pt plus 1fil\relax
 \halign\bgroup
  &\hfil$\displaystyle ##$\tabskip 0pt\relax
  &$\displaystyle {}##$\hfil\tabskip 0pt plus 1fil\relax\cr
}
{%
 \crcr\egroup
}

% Saves its contents typeset like SimpleAlign.  You can give it a name.
\newenvironment{AlignAgain}[1][AlignBox]
{%
 \expandafter\let\expandafter\AlignAgainBox\csname #1\endcsname
 \setbox\AlignAgainBox=\vbox\bgroup\SimpleAlign
}
{%
 \endSimpleAlign\egroup
 \ReBox\AlignAgainBox
}
\newbox\AlignBox

% Prints the lines from {AlignAgain} one-by-one, with or without equation numbers as starred.  If you named the {AlignAgain}, use it here.
\makeatletter
\newcommand\ALineAgain{%
 \@ifstar
  {\AlignAgainStartrue\@ALineAgain}
  {\AlignAgainStarfalse\@ALineAgain}%
}
\newcommand\@ALineAgain[1][AlignBox]{%
 \expandafter\let\expandafter\AlignAgainBox\csname #1\endcsname
 \begin{equation*}
  \PutFirstBox\ifAlignAgainStar\AlignAgainBox
 \end{equation*}
}
\makeatother
\newif\ifAlignAgainStar

% Reboxes a box in the format: {[1][2]...[n]} -> {[1]{[2]{...}[n]}}
% {...} = \hbox
\newcommand{\ReBox}[1]
{%
 % To enter internal vertical mode, where \lastbox is valid
 \setbox0=\vbox{%
  \unvbox#1\relax
  \global\setbox#1=\hbox{\hbox{}}
  \loop
   \unskip
   %\box0 is the box currently at the end of #1
   \setbox0=\lastbox
  \ifvoid0\relax
  \else
   \global\setbox#1=\hbox{\box0\box#1}%
  \repeat
 }%
}

% Puts the first box in a nested-box list into the display, saving the rest back in #1
% Optionally places an equation number
\newcommand{\PutFirstBox}[2]{%
 \hbox to \displaywidth{%
  \unhbox#2\relax
  \global\setbox#2=\lastbox
  \setbox0=\lastbox
  \unhbox0%
  #1\else\refstepcounter{equation}\llap{(\theequation)}\fi
 }%
}

\begin{document}

\section{First section}
\subsection{A subsection}
Hello
\begin{AlignAgain}
 a &= b & c &= d \label{firsteqn} \\
 f(x) &= g(x) & h(x) &= e^{-1/x^2} \label{myeqn} \\
\end{AlignAgain}

This is a paragraph with a lot of redundant words whose only purpose is to extend it onto a new line or two so it's dramatic when I display this equation:
\ALineAgain
and then follow it with a bunch more text.

And also a new paragraph, just for good measure.  I wonder if the two equations will line up?  I sure hope so!
\ALineAgain
This is sort of fun. 

Can we reference equations by section? Try (\ref{firsteqn}) and (\ref{myeqn}).

\end{document}

Best Answer

enter image description here

There's no problem in having multiple paragraphs in \intertext you just can't have a \par or blank line, \endgraf is OK though:

\documentclass{article}
\usepackage{amsmath}

\def\a{One two three four. }
\def\b{\a\a\a\a}
\def\stuff{\b\b}
\begin{document}

\begin{align}
1&=222\\
\intertext{%
para 1 \stuff
\endgraf
Followed by para 2 \stuff}
33&=44\\
555&=6
\end{align}

\end{document}