将矩阵元素与内部的 bmatrix 对齐

将矩阵元素与内部的 bmatrix 对齐

我制作了以下矩阵:

\newcommand{\mtx}[2]{\begin{#1matrix}#2\end{#1matrix}}
\newcommand{\mtxR}[2]{\begin{#1matrix*}[r]#2\end{#1matrix*}}
\begin{equation*}
    A=\mtx{}{\mtx{}{e_1&e_2&e_3&e_4&e_5&e_6&e_7&e_8}&\\\mtxR{b}{1&&1&&&&&\\-1&1&&1&&&&\\&-1&&&1&1&&\\&&&&-1&-1&&1\\&&&-1&&&1&-1\\&&-1&&&&-1&}&\mtx{}{v_1\\v_2\\v_3\\v_4\\v_5\\v_6}}
\end{equation*}

在此处输入图片描述

有没有办法将顶行中的 e 与 bmatrix 中的数字对齐,并且将最右边一列中的 v 与 bmatrix 中的数字对齐?

答案1

像这样?

\documentclass{article}
\usepackage{blkarray}
\begin{document}

\[
A=\begin{blockarray}{cccccc}
e_1 & e_2 & e_3 & e_4 & e_5 \\
\begin{block}{[ccccc]l}
  1 & -1 & 1 & 1 & 1 & v_1 \\
    & 1  &   &   & 1 & v_2 \\
    &    & 1 &   & 1 & v_3 \\
    &    &   & 1 & 1 & v_4 \\
    &    &   &   & 1 & v_5 \\
\end{block}
\end{blockarray}
\]
\end{document}

在此处输入图片描述

如果您希望1-1条目对齐,以便数字正好位于彼此下方,则可以尝试使用 定义内部block[rrrrr]l但您可能会认为(例如)右侧列太靠近右括号。

或者你可以“作弊”将\smash减号设置在零宽度框中。我个人并不介意-1条目稍微向右突出一点,因为我认为这可能会让它们更容易阅读。

或者您可以nicematrix按照其他答案所示使用。

答案2

您可以使用nicematrix

\documentclass{article}
\usepackage{nicematrix}

\begin{document}
\[
\begin{bNiceArray}{*{8}{R}}[
  first-row,
  last-col,
]
e_1 & e_2 & e_3 & e_4 & e_5 & e_6 & e_7 & e_8 & \\
  1 &     &   1 &     &     &     &     &     & v_1 \\
 -1 &   1 &     &   1 &     &     &     &     & v_2 \\
    &  -1 &     &     &   1 &   1 &     &     & v_3 \\
    &     &     &     &  -1 &  -1 &     &   1 & v_4 \\
    &     &     &  -1 &     &     &   1 &  -1 & v_5 \\
    &     &  -1 &     &     &     &  -1 &     & v_6 \\
\end{bNiceArray}
\]

\end{document}

在此处输入图片描述

答案3

这里有两种方法:withblkarray和 with bigdelim

\documentclass{article}
\usepackage{array, blkarray}
\usepackage{bigdelim} 

\begin{document}

\[ A = \begin{blockarray}{*{8}{r}l}
  e_1 & e_2 & e_3 & e_4 & e_5 & e_6 & e-7 & e_8 & \\
\begin{block}{[*{8}{r}]@{\quad}l}
  1 & & 1 & & & & & & v_1 \\
-1 & 1 & &1 & & & & & v_2 \\
 & -1 & & & 1 & 1 & & & v_3 \\
 & & & & -1 & -1 & & 1 & v_4 \\
  & & & -1 & & & 1 & -1 & v_5 \\
 & & -1 & & & & -1 & &v_6 \\
\end{block}
\end{blockarray}
\]

\[ A = \begin{array}{r@{\,}*{8}{r}@{\,}l@{}l}
  & e_1 & e_2 & e_3 & e_4 & e_5 & e_6 & e-7 & e_8 & \\
\ldelim[{6}{*} & 1 & & 1 & & & & & & \rdelim]{6}{*} & v_1 \\
& -1 & 1 & &1 & & & & & & v_2 \\
& & -1 & & & 1 & 1 & & & & v_3 \\
& & & & & -1 & -1 & & 1 & & v_4 \\
& & & & -1 & & & 1 & -1 & & v_5 \\
& & & -1 & & & & -1 & & & v_6
\end{array}
\]

\end{document} 

在此处输入图片描述

答案4

您可以使用nicematrix和它的好键,如code-for-first-rowcode-for-last-col。这样您就不必输入等e_1,也不必输入等。这还允许您将列或行的条目居中。e_2v_1v_2

\documentclass{article}
\usepackage{nicematrix}

\begin{document}
\[\pgfmathsetmacro{\myw}{width("$-1$")}
\begin{bNiceArray}{*{8}{R}}[
  first-row,
  last-col,
  code-for-first-row = \makebox[\myw pt][c]{$e_{\arabic{jCol}}$},
  code-for-last-col = v_{\arabic{iRow}}
]
 &  &  &  &  &  &  &  & \\
  1 &     &   1 &     &     &     &     &     &  \\
 -1 &   1 &     &   1 &     &     &     &     &  \\
    &  -1 &     &     &   1 &   1 &     &     &  \\
    &     &     &     &  -1 &  -1 &     &   1 &  \\
    &     &     &  -1 &     &     &   1 &  -1 &  \\
    &     &  -1 &     &     &     &  -1 &     &  \\
\end{bNiceArray}
\]

\end{document}

在此处输入图片描述

相关内容