如何拉伸分隔符来演化 kbordermatrix 内的矩阵?

如何拉伸分隔符来演化 kbordermatrix 内的矩阵?

我将三个矩阵放入 kbordermatrix 中,但分隔符未完全覆盖内部矩阵。我该如何拉伸 kbordermatrix 分隔符以覆盖内部矩阵?

我的 MWE:

\documentclass[brazil]{article}



\usepackage{amsfonts,amssymb,array,mathtools}
\usepackage{kbordermatrix}



\begin{document}

\begin{eqnarray} 
    \mathbf{A} & = & 
    \setlength{\kbrowsep}{2pt}
    \setlength{\kbcolsep}{0pt}
    \renewcommand{\arraystretch}{1.5}
    \renewcommand{\kbldelim}{(}
    \renewcommand{\kbrdelim}{)}
    \kbordermatrix{
        \omit & & , & & , & \cr
        \omit & \overbrace{\begingroup
            \setlength{\arraycolsep}{2.5pt}
            \begin{bmatrix}
            0,9960 & -0,0037    \\
            0,0111 &  0,9867        
            \end{bmatrix}
            \endgroup} & , & \overbrace{\begingroup
            \setlength{\arraycolsep}{2.5pt}
            \begin{bmatrix}
            0,9961 & -0,0059    \\
            0,0715 &  1,0423
            \end{bmatrix}
            \endgroup} & , & \overbrace{\begingroup
            \setlength{\arraycolsep}{2.5pt}
            \begin{bmatrix}
            1,0034 & 0,0009     \\
            0,0098 & 0,9696
            \end{bmatrix}
            \endgroup}
    } \nonumber
\end{eqnarray}


\end{document}

上述代码的执行结果:

在此处输入图片描述

PS:我想将分隔符拉伸至红色箭头为止。

答案1

您实际上不需要kbordermatrix获取此布局。但是,最后一列的矩阵不能有overbrace,所以我添加了一个\vphantom类似矩阵的。

我还提出了一个具有内部中型矩阵的变体,其mmatrix环境来自nccmath。最后,我必须加载icomma才能获得正确的小数点逗号间距。

\documentclass[brazil]{article}
\usepackage{amssymb, array, mathtools}
\usepackage{icomma, nccmath} 
\newenvironment{bmmatrix}{\medsize\bmatrix}{\endbmatrix\endmedsize}

\begin{document}

\begin{align*}
\mathbf{A} & = \renewcommand{\arraystretch}{1.5}
 \begin{pmatrix}
            \,\smash[t]{\overbrace{\begin{bmatrix}
            0{,}9960 & -0,0037 \\
            0,0111 & 0,9867
            \end{bmatrix}}}
 &\negthickspace{,}\negthickspace\! & 
            \smash[t]{\overbrace{\begin{bmatrix}
            0,9961 & -0,0059 \\
            0,0715 & 1,0423
            \end{bmatrix}}}
 &\negthickspace{,}\negthickspace\! & 
            {\smash[t]{\overbrace%
            {\begin{bmatrix}
            1,0034 & 0,0009 \\
            0,0098 & 0,9696
            \end{bmatrix}}}}\, \vphantom{\begin{bmatrix}\, \\ \,
  \end{bmatrix}}
 \end{pmatrix}\\[2ex]\ 
\mathbf{A} & = \renewcommand{\arraystretch}{1.5}
\begin{pmatrix}
            \,\smash[t]{\overbrace{\begin{bmmatrix}
            0{,}9960 & -0,0037 \\
            0,0111 & 0,9867
            \end{bmmatrix}}}
 &\negthickspace{,}\negthickspace\! &
            \smash[t]{\overbrace{\begin{bmmatrix}
            0,9961 & -0,0059 \\
            0,0715 & 1,0423
            \end{bmmatrix}}}
 &\negthickspace{,}\negthickspace\! &
            {\smash[t]{\overbrace%
            {\begin{bmmatrix}
            1,0034 & 0,0009 \\
            0,0098 & 0,9696
            \end{bmmatrix}}}}\, \vphantom{\begin{bmmatrix}\, \\ \,
  \end{bmmatrix}}
 \end{pmatrix}
 \end{align*}

\end{document}

在此处输入图片描述

答案2

关闭\arraystretch。然后手动添加行间所需的间距。

\documentclass[brazil]{article}

\usepackage{amsfonts,amssymb,array,mathtools}
\usepackage{kbordermatrix}

\begin{document}
\begin{eqnarray} 
    \mathbf{A} & = & 
    \setlength{\kbrowsep}{2pt}
    \setlength{\kbcolsep}{0pt}
%    \renewcommand{\arraystretch}{1.5}
    \renewcommand{\kbldelim}{(}
    \renewcommand{\kbrdelim}{)}
    \kbordermatrix{
        \omit & & , & & , & \cr
        \omit & \overbrace{\begingroup
            \setlength{\arraycolsep}{2.5pt}
            \begin{bmatrix}
            0,9960 & -0,0037    \\[2ex]
            0,0111 &  0,9867        
            \end{bmatrix}
            \endgroup} & , & \overbrace{\begingroup
            \setlength{\arraycolsep}{2.5pt}
            \begin{bmatrix}
            0,9961 & -0,0059    \\[2ex]
            0,0715 &  1,0423
            \end{bmatrix}
            \endgroup} & , & \overbrace{\begingroup
            \setlength{\arraycolsep}{2.5pt}
            \begin{bmatrix}
            1,0034 & 0,0009     \\[2ex]
            0,0098 & 0,9696
            \end{bmatrix}
            \endgroup}
    } \nonumber
\end{eqnarray}

\end{document}

在此处输入图片描述

答案3

我的看法是,这kbordermatrix是不适合这个工作的工具。

我建议使用siunitx数字表。

这里的技巧是使用幻像两行数组来设置左分隔符和右分隔符。定义是在 内部进行的\[...\],因此它们是本地的。

如果您有对齐,则本地定义应该以不同的方式排列,但这取决于您想要实现的目标。

任何状况之下,绝不使用eqnarray(见eqnarray对比align)。

\documentclass{article}
\usepackage{amsfonts,amssymb,array,mathtools}
\usepackage{siunitx}

\usepackage{lipsum} % for context

\sisetup{output-decimal-marker={,}}

\newcolumntype{T}[1]{S[table-format=#1]}
\newenvironment{nmatrix}[1]
 {\begin{bmatrix}\begin{tabular}{@{}#1@{}}}
 {\end{tabular}\end{bmatrix}}

\begin{document}

\lipsum*[3]
\[
\renewcommand{\tabcolsep}{2.5pt}
\renewcommand{\arraystretch}{1.2}
\newcommand{\LEFT}{%
  \left(\vphantom{\begin{bmatrix}1\\1\end{bmatrix}}\right.
}
\newcommand{\RIGHT}{%
  \left.\vphantom{\begin{bmatrix}1\\1\end{bmatrix}}\right)
}
%% Now the real job
\mathbf{A}=
\LEFT
\overbrace{
  \begin{nmatrix}{T{1.4}T{-1.4}}
  0,9960 & -0,0037    \\
  0,0111 &  0,9867        
  \end{nmatrix}
}\;,\;
\overbrace{
  \begin{nmatrix}{T{1.4}T{-1.4}}
  0,9961 & -0,0059    \\
  0,0715 &  1,0423
  \end{nmatrix}
}\;,\;
\overbrace{
  \begin{nmatrix}{T{1.4}T{1.4}}
  1,0034 & 0,0009     \\
  0,0098 & 0,9696
  \end{nmatrix}
}
\RIGHT
\]
\lipsum[3]

\end{document}

在此处输入图片描述

相关内容