Here's a way to manually avoid the need to manipulate the counter. I create two \vbox
es. The first is an array of blank subequations, and the second is the desired matrix in a simple \[...\]
construct. Then I stack the two \vbox
es atop each other. Voila!
I've even set it up so that adjusting the vertical baselineskip of the matrix (since I used TABstacks) is automatically reflected in the vertical separation of the equation numbering (through the use of the \aligngap
macro).
One could, if desired, replace my TABstacks with {bmatrix}
es and it would still work, though the definition of \aligngap
would in that case, need some tweaking.
\documentclass{article}
\usepackage{amsmath,tabstackengine,lipsum}
\newsavebox\boxA
\def\aligngap{\dimexpr\Lstackgap-15pt\relax}
\begin{document}
\lipsum[1]
{\setstackgap{L}{14pt}% SELECTABLE MATRIX ROW BASELINESKIP
\setbox0=\vbox{\begin{subequations}%
\begin{align}\label{eq:A}\\[\aligngap]\label{eq:B} \\[\aligngap]\label{eq:C}\end{align}%
\end{subequations}}
\savebox\boxA{\vbox{\[
\setstacktabbedgap{5pt}
\bracketMatrixstack{
H & J^T & -Z^{\frac12} \\
J & -\delta I & \\
-Z^{\frac12} & & -X}
\bracketVectorstack{r \\ s \\ t}
=
\lambda
\bracketMatrixstack{
H & & \\
& U & \\
& & W}
\bracketVectorstack{r \\ s \\ t}
\]}}
\noindent\stackengine{3.5pt}{\box0}{\usebox{\boxA}}{O}{c}{F}{F}{L}}
In equations \ref{eq:A}, \ref{eq:B}, and \ref{eq:C},
\lipsum[2]
\end{document}

columns
! Labeling rows doesn't make sense if there is a matrix product in your equation.