将矩阵与其标签对齐

将矩阵与其标签对齐

假设我有以下乳胶代码,它在矩阵中绘制一个矩阵,如下所示,其中外部矩阵的单元格 (1,2) 是定义列标签的向量,外部矩阵的单元格 (2,1) 是定义行标签的向量,单元格 (2,2) 包含矩阵:

\begin{matrix}
 & \begin{matrix}
\cdots & \rho_{ij} & \cdots & \rho_{ik} & \cdots & \gamma_i & \cdots & \gamma_j  & \cdots & \lambda 
\end{matrix}\\ 
\begin{matrix}
\cdots \\ 
\rho_{ij}\\ 
\cdots \\ 
\rho_{ik}\\ 
\cdots \\ 
\gamma_i \\ 
\cdots \\ 
\lambda \\ 
\end{matrix} & \begin{bmatrix}
\cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots\\ 
\cdots & 1 & \cdots & 0 & \cdots & b_j \mu_j & \cdots & b_i \mu_i & \cdots & 0 \\ 
\cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots\\ 
\cdots & 0 & \cdots & 1 & \cdots & b_j \mu_j & \cdots & 0 & \cdots & 0 \\ 
\cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots\\ 
\cdots & b_j \mu_j & \cdots & b_k \mu_k & \cdots & 0 & \cdots & 0 & \cdots & -\mu_i\\ 
\cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots\\ 
\cdots & 0 & \cdots & 0 & \cdots & -\mu_i & \cdots & -\mu_j & \cdots & 0
\end{bmatrix}
\end{matrix}

我手头的问题是行标签(在单元格 (2,1) 中)和列标签(在单元格 (1,2) 中)不一定与矩阵(在单元格 (2,2) 中)对齐。

我怎样才能使它们对齐?

答案1

为了忠实于您的实现,您必须使用某种方式来指定具有不同宽度和标题的列的宽度。最简单的方法是创建一个框,在其中找到列中最宽的元素以获得正确的宽度,然后将该框内的标题设置为所述宽度:

在此处输入图片描述

\documentclass{article}
\usepackage{mathtools,calc}
\newcommand{\mathwd}[2]{\makebox[\widthof{$#1$}]{$#2$}}
\begin{document}

\[
  \begin{matrix}
    &
    \begin{matrix}
      \cdots & \mathwd{b_j\mu_j}{\rho_{ij}} & \cdots & \mathwd{b_k\mu_k}{\rho_{ik}} & \cdots & 
        \mathwd{b_j\mu_j}{\gamma_i} & \cdots & \mathwd{-\mu_j}{\gamma_j} & \cdots & \mathwd{-\mu_i}{\lambda}
    \end{matrix} \\
    \begin{matrix}
      \cdots \\ 
      \rho_{ij}\\ 
      \cdots \\ 
      \rho_{ik}\\ 
      \cdots \\ 
      \gamma_i \\ 
      \cdots \\ 
      \lambda \\ 
    \end{matrix} &
    \begin{bmatrix}
      \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots\\ 
      \cdots & 1 & \cdots & 0 & \cdots & b_j \mu_j & \cdots & b_i \mu_i & \cdots & 0 \\ 
      \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots\\ 
      \cdots & 0 & \cdots & 1 & \cdots & b_j \mu_j & \cdots & 0 & \cdots & 0 \\ 
      \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots\\ 
      \cdots & b_j \mu_j & \cdots & b_k \mu_k & \cdots & 0 & \cdots & 0 & \cdots & -\mu_i\\ 
      \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots\\ 
      \cdots & 0 & \cdots & 0 & \cdots & -\mu_i & \cdots & -\mu_j & \cdots & 0
    \end{bmatrix}
  \end{matrix}
\]

\end{document}

替代输入也以以下形式存在bordermatrixblkarraykbordermatrix。 看带标签列的阵列

答案2

与。{bNiceMatrix}nicematrix

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\[
\begin{bNiceMatrix}[first-col,first-row]
    &
\cdots & \rho_{ij} & \cdots & \rho_{ik} & \cdots & \gamma_i & \cdots & \gamma_j & \cdots & \lambda \\
\cdots  &  \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots\\ 
\rho_{ij}& \cdots & 1 & \cdots & 0 & \cdots & b_j \mu_j & \cdots & b_i \mu_i & \cdots & 0 \\ 
\cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots\\ 
\rho_{ik} & \cdots & 0 & \cdots & 1 & \cdots & b_j \mu_j & \cdots & 0 & \cdots & 0 \\ 
\cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots\\ 
\gamma_i & \cdots & b_j \mu_j & \cdots & b_k \mu_k & \cdots & 0 & \cdots & 0 & \cdots & -\mu_i\\ 
\cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots\\ 
\lambda & \cdots & 0 & \cdots & 0 & \cdots & -\mu_i & \cdots & -\mu_j & \cdots & 0
\end{bNiceMatrix}
\]

\end{document}

第一个代码的输出

如果您希望第一列(矩阵之外)居中,则必须稍微更改代码:

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\[
\begin{NiceArray}[first-row]{c[*{10}{c}]}
    &
\cdots & \rho_{ij} & \cdots & \rho_{ik} & \cdots & \gamma_i & \cdots & \gamma_j & \cdots & \lambda \\
\cdots  &  \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots\\ 
\rho_{ij}& \cdots & 1 & \cdots & 0 & \cdots & b_j \mu_j & \cdots & b_i \mu_i & \cdots & 0 \\ 
\cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots\\ 
\rho_{ik} & \cdots & 0 & \cdots & 1 & \cdots & b_j \mu_j & \cdots & 0 & \cdots & 0 \\ 
\cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots\\ 
\gamma_i & \cdots & b_j \mu_j & \cdots & b_k \mu_k & \cdots & 0 & \cdots & 0 & \cdots & -\mu_i\\ 
\cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots & \cdots\\ 
\lambda & \cdots & 0 & \cdots & 0 & \cdots & -\mu_i & \cdots & -\mu_j & \cdots & 0
\end{NiceArray}
\]

\end{document}

第二段代码的输出

相关内容