我将三个矩阵放入 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}