如何获得具有行和列标签并且可以与标题对齐的矩阵?

如何获得具有行和列标签并且可以与标题对齐的矩阵?

我想复制这张图片:桌子

有没有办法不使用任何外部包(理想情况下只是和tikz的一些组合)或狂野的重新定义来实现这一点?我不喜欢使用,因为当试图让它吐出一个括号矩阵时,它会做坏事。\arraytabularblkarray

到目前为止我可以做

\documentclass[11pt]{amsart}
\begin{document}
\begin{tabular}{c @{\hspace{2\tabcolsep}} *{4}{c}}

&
0 &
1 &
2 &
3
\\[1ex]
0 & 0 & 1/3 & 1/3 & 1/3  \\
1 & 0 & 1/3 & 1/3 & 1/3  \\
2 & 1/3 & 1/3 & 1/3 & 0  \\
3 & 0 & 1/3 & 1/3 & 1/3  \\ 

\end{tabular}
\end{document}

编辑:我喜欢 @Werner 最初给出的答案,但对于我的用例来说,似乎很难修改。这是我尝试过的,但无法正确对齐括号:

\[
  P =
  \begin{array}{ *{5}{c} }
      \\[3\normalbaselineskip]
      & \multicolumn{4}{c}{\rowind{State}} \\
      & \colind{\$0} & \colind{\$1} & \colind{\$2} & \colind{\$3}  \\
    \rowind{0} &   0 & 1/3 & 1/3 & 1/3 \\
    \rowind{1} & 0 & 1/3 & 1/3 & 1/3 \\
    \rowind{2} \smash{\makebox[0pt][l]{$%
      \hspace{.5\tabcolsep}\left[\begin{array}{@{}c@{}}
        \mathstrut \\ \mathstrut \\ \mathstrut \\ \mathstrut 
      \end{array}\right.
    $}} & 1/3 & 1/3 & 1/3 & 0 \smash{\makebox[0pt][l]{$%
      \hspace{.5\tabcolsep}\left.\begin{array}{@{}c@{}}
        \mathstrut \\ \mathstrut \\ \mathstrut \\ \mathstrut 
      \end{array}\right]
    $}} \\
    \rowind{3} &  0 & 1/3 & 1/3 & 1/3  \\
  \end{array}
\]

答案1

当然!我做了一些定义以避免重复内容,如果您愿意,也可以对其进行调整:

在此处输入图片描述

\documentclass{article}

\newcommand{\indsize}{\scriptsize}
\newcommand{\colind}[2]{\displaystyle\smash{\mathop{#1}^{\raisebox{.5\normalbaselineskip}{\indsize #2}}}}
\newcommand{\rowind}[1]{\mbox{\indsize #1}}

\begin{document}

\[
  P =
  \begin{array}{@{}c@{}}
    \rowind{0} \\ \rowind{1} \\ \rowind{2} \\ \rowind{3} \\ \rowind{4}
  \end{array}
  \mathop{\left[
  \begin{array}{ *{5}{c} }
     \colind{1}{\$0}  &  \colind{0}{\$1}  &  \colind{0}{\$2}  & \colind{0}{\$3} & \colind{0}{\$4} \\
    1-p &  0  &  p  & 0 & 0 \\
     0  & 1-p &  0  & p & 0 \\
     0  &  0  & 1-p & 0 & p \\
     0  &  0  &  0  & 0 & 1
  \end{array}
  \right]}^{
  \begin{array}{@{}c@{}}
    \rowind{State} \\ \mathstrut
  \end{array}
  }
\]

\end{document}

相关内容