是否可以为矩阵方程的每一行赋予一个方程编号?
我怎样才能以子方程编号的形式为矩阵方程的每一行添加一个方程标签?在这里,我想要诸如 (3.1a)、(3.1b)、(3.1c) 之类的方程编号(我不是指有边界矩阵中的行/列标签)。
谢谢!
答案1
嗯!不支持 LaTeX 语法,但是
\documentclass{article}
\usepackage{amsmath}
\newsavebox\labelbox
\begin{document}
\savebox\labelbox{$\begin{matrix}
\refstepcounter{equation}(\theequation)\label{aa}\\
\refstepcounter{equation}(\theequation)\label{bb}\\
\refstepcounter{equation}(\theequation)\label{cc}
\end{matrix}$}
\[
\begin{bmatrix}
H & J^T & -Z^{\frac12} \\
J & -\delta I & \\
-Z^{\frac12} & & -X
\end{bmatrix}
\begin{bmatrix}
r \\ s \\ t
\end{bmatrix}
=
\lambda
\begin{bmatrix}
H & & \\
& U & \\
& & W
\end{bmatrix}
\begin{bmatrix}
r \\ s \\ t
\end{bmatrix}
\eqno
\usebox{\labelbox}
\]
[\ref{aa}]
[\ref{bb}]
[\ref{cc}]
\end{document}
答案2
偶然间我发现了一个简单直接的方法。如果实际矩阵中有一些大列,则应在数值矩阵中设置相应的幻像。\displaystyle
如果确实需要,也可以在方程数字矩阵中添加。
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand{\ltxlabel}{\ltx@label}
\makeatother
\begin{document}
\begin{align}\refstepcounter{equation}
\begin{bmatrix}
H & J^T & -Z^{\frac12} \\
J & -\delta I & \\
-Z^{\frac12} & & -X
\end{bmatrix}
\begin{bmatrix}
r \\ s \\ t
\end{bmatrix}
=
\lambda
\begin{bmatrix}
H & & \\
& U & \\
& & W
\end{bmatrix}
\begin{bmatrix}
r \\ s \\ t
\end{bmatrix}
\tag*{$\begin{matrix}
\text{(\theequation a)}\\
\text{(\theequation b)}\\
\text{(\theequation c)}
\end{matrix}$}
\ltxlabel{eq:matrix}
\end{align}
The first row (\ref{eq:matrix}a) is the most important row of the matrix.
\end{document}
答案3
这里有一种方法可以手动避免操作计数器。我创建了两个\vbox
es。第一个是空白子方程数组,第二个是简单\[...\]
构造中的所需矩阵。然后我将两个\vbox
es 堆叠在一起。瞧!
我甚至将其设置为调整矩阵的垂直基线跳跃(因为我使用了 TABstacks)会自动反映在方程编号的垂直分隔中(通过使用宏\aligngap
)。
如果需要的话,可以用{bmatrix}
es 替换我的 TABstacks,它仍然可以工作,尽管在这种情况下,would 的定义\aligngap
需要进行一些调整。
\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}
答案4
如果需要 AMS-s,下面有一个快速而粗糙的替代方案\tag
。缺点是它首先需要进行一些手动高度调整matrix
。如果没有 David 的解决方案,这个解决方案就不会存在。谢谢,David!我也需要这个。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\par\noindent\begin{minipage}[c][][c]{0.9\textwidth}
\begin{align*}
\begin{matrix}
1\cdot x_1&+&2\cdot x_2&+&3\cdot x_3&=&4\\[3pt]
5\cdot x_1&+&6\cdot x_2&+&7\cdot x_3&=&8\\[3pt]
9\cdot x_1&+&10\cdot x_2&+&11\cdot x_4&=&12
\end{matrix}
\end{align*}
\end{minipage}\begin{minipage}[c][][c]{0.1\textwidth}
\begin{align}\refstepcounter{equation}
\tag{\theequation a}\label{eq:1a}\\[0pt]
\tag{\theequation b}\label{eq:1b}\\[0pt]
\tag{\theequation c}\label{eq:1c}
\end{align}
\end{minipage}
\end{document}