紧凑块矩阵

紧凑块矩阵

我正在尝试创建一个块矩阵,肯定已经有数百个关于它们的问题了。但到目前为止,我读到的大部分内容最终看起来都很老套。我所拥有的是:

\documentclass{article}

\usepackage[fleqn]{amsmath}
\usepackage{blkarray}
\usepackage{multirow}
\usepackage{mathtools}
\usepackage{graphicx}
\newcommand{\rdots}{\hspace{.2ex}\raisebox{1ex}{\rotatebox{-12}{$\ddots$}}}

\begin{document}

\begin{equation}
    \begin{blockarray}{(c@{}c@{}c|c@{}c@{}c)l}
        1&&0&\BAmulticolumn{3}{c}{\multirow{3}{*}{\huge$0$}}&\multirow{3}{*}{$\dim F\;\text{vertical}$}\\&\rdots&&&&&\\0&&1&&&&\\
        \cline{1-6}
        \BAmulticolumn{3}{c|}{\multirow{3}{*}{\huge$0$}}&\tfrac{1}{t}&&0&\multirow{3}{*}{$\dim Z\;\text{horizontal}$}\\&&&&\rdots&&\\&&&0&&\tfrac{1}{t}&\\
    \end{blockarray}
\end{equation}

\end{document}

电流输出

有很多位可以改进,但最重要的是子矩阵中的间距太宽。

我还尝试将多次出现的事情包含在宏中

\newcommand\zeroblock[3][]{\BAmulticolumn{#2}{c#1}{\multirow{#3}{*}{\huge$0$}}}

\newcommand\position[3]{\mspace{#1}\raisebox{#2}{$\mathclap{#3}$}}
\newcommand\diagonal[1]{\begin{matrix}#1&\position{-8mu}{-2em}{\rdots}\scalebox{1.5}{0}\\\scalebox{1.5}{0}&#1\end{matrix}}

\begin{document}

\begin{equation}
    \begin{array}{c|c}
        \diagonal{1}&\zeroblock33\\
        \zeroblock33&\diagonal{\tfrac{1}{t}}
    \end{array}
\end{equation}

\zeroblock给了我

! Misplaced \omit.
\multispan ->\omit 
                   \@multispan 
l.18        \diagonal{1}&\zeroblock33
                                \\

并且diagonal,虽然它在内部有效array,但在内部无效,blockarray并且给出

! Incompatible list can't be unboxed.
<argument> \BA@first@box 

而且看起来也不太好:

<code>\diagonal{1} 的输出

所以我在想,肯定有更好的方法来完成这些事情。有吗?

答案1

使用默认的 tabcolsep 并增加数组拉伸:

\documentclass{article}

\usepackage[fleqn]{amsmath}
\usepackage{blkarray}
\usepackage{multirow}
\usepackage{mathtools}
\usepackage{graphicx}
\newcommand{\rdots}{\hspace{.2ex}\raisebox{1ex}{\rotatebox{-12}{$\ddots$}}}

\begin{document}

\begin{equation}\def\arraystretch{1.5}
    \begin{blockarray}{(ccc|ccc)l}
        1&&0&\BAmulticolumn{3}{c}{\multirow{3}{*}{\huge$0$}}&\multirow{3}{*}{$\dim F\;\text{vertical}$}\\&\rdots&&&&&\\0&&1&&&&\\
        \cline{1-6}
        \BAmulticolumn{3}{c|}{\multirow{3}{*}{\huge$0$}}&\tfrac{1}{t}&&0&\multirow{3}{*}{$\dim Z\;\text{horizontal}$}\\&&&&\rdots&&\\&&&0&&\frac{1}{t}&\\
    \end{blockarray}
\end{equation}

\end{document}

在此处输入图片描述

使用小矩阵也是有意义的:

\begin{equation}
 \left(
    \begin{array}{r@{}c|c@{}l}
  &    \begin{smallmatrix}
        1 & & 0 \\
          &\ddots&\\
        0 & & 1\rule[-1ex]{0pt}{2ex}
      \end{smallmatrix} & \mbox{\huge0} & \rlap{\kern5mm$\dim F$ vertical}\\\hline
  &    \mbox{\huge0} &  
       \begin{smallmatrix}\rule{0pt}{2ex}
        \frac1t & & 0 \\
          &\ddots&\\
        0 & & \frac1t
      \end{smallmatrix}    &  \rlap{\kern5mm$\dim Z$ horizontal}
    \end{array} 
\right)
\end{equation}

在此处输入图片描述

答案2

与。{NiceArray}nicematrix

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\NiceMatrixOptions{cell-space-limits=1pt}
\newcommand{\BigZero}{\Block{3-3}<\LARGE>{0}}

$\begin{pNiceArray}{ccc|ccc}[last-col]
1 & & 0 & \BigZero \\
& \Ddots & & & & & \dim F \text{ vertical} \\
0 & & 1 \\
\hline
\BigZero & & &\frac{1}{t} & & 0 \\
& & & & \Ddots & &  \dim Z \text{ horizontal} \\
& & & 0 & & \frac{1}{t}
\end{pNiceArray}$

\end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

上述代码的输出

相关内容