以下是简单的代码
\begin{tabular}{cccl}
a & b & c & \\
\multicolumn{3}{c}{\multirow{3}{*}{$\begin{pmatrix}
1 &0&0,25 \\ 0&1&0 \\ 0,25&0&1 \end{pmatrix}$}} & dgf \\
\multicolumn{3}{c}{} & dgfhb \\
\multicolumn{3}{c}{} & dghb
\end{tabular}
如您所见,“a”、“b”和“c”未居中对齐。但如果我删除里面的pmatrix
,multirow
一切正常。您能解释一下吗?您知道如何解决这个问题吗?也就是说,我希望“a”位于矩阵第一列上方,依此类推。
答案1
包blkarray
就是你想要的。除了pmatrix
,您还可以使用block
带有()
分隔符的 a 。根据@Bernard的评论,您可以添加两个\bigstrut
s 来稍微扩大括号。请参见以下内容blkarray
以及它与 的pmatrix
比较amsmath
。
\documentclass[12pt,a4paper]{article}
\usepackage{blkarray,bigstrut}
\usepackage{amsmath}
\begin{document}
\[
\begin{blockarray}{cccl}
a & b & c & \\
\begin{block}{(ccc)l}
1 & 0 & 0.25 & \text{dgf} \bigstrut[t]\\
0 & 1 & 0 & \text{dgfhb} \\
0.25 & 0 & 1 & \text{dghb} \bigstrut[b]\\
\end{block}
\end{blockarray}
\]
% Compared to amsmath's pmatrix:
\[
\begin{pmatrix}
1 &0&0,25 \\ 0&1&0 \\ 0,25&0&1 \end{pmatrix}\text{dgfhb}
\]
\end{document}
答案2
如果您更喜欢使用 amsmath环境,则可以使用和包*matrix
来实现 。我将其扭曲为定义 (“带注释的矩阵”)环境。它接受分隔符的可选参数,例如from 。gauss
pgffor
annotmatrix
gmatrix
gauss
列的注释必须在指令之后的环境内使用命令进行编码\colops
。类似地,行的注释也使用相同的命令\matlab{column index}{label}
引入和编码。请注意,行和列的索引从 0 开始。\rowops
\matlab{row index}{label}
\documentclass{article}
\usepackage{mathtools}
\usepackage{gauss, pgffor}
\def\matlab{\mult}
\newenvironment{annotmatrix}[1][]{%
\let\rowmultlabel\text \let\colmultlabel\text\setlength{\rowarrowsep}{2pt}\setlength{\colarrowsep}{1.5ex}%
\gmatrix[#1]}
{\endgmatrix}
\begin{document}
\[
\begin{annotmatrix}[p]
1 &0&0{,}25 \\ 0&1&0 \\ 0{,}25&0&1
\colops
\foreach \i/\lab in {0/a, 1/b, 2/c}{\matlab{\i}{\footnotesize\lab}}
\rowops
\foreach \i/\lab in {0/dgf, 1/dgfhb, 2/dghb}{\matlab{\i}{\footnotesize\lab}}
\end{annotmatrix}
\]
\end{document}