将文本置于矩阵列的中央

将文本置于矩阵列的中央

我如何修改下面的代码,使文本以1s 的形式位于矩阵列的中心,而不是与列的左边缘对齐。

以下是 MWE 代码和输出。

\documentclass{article}

\usepackage{amsmath}

% command for overbrace in matrix
\newcommand\bovermat[2]{%
  \makebox[0pt][l]{$\smash{\overbrace{\phantom{%
    \begin{matrix}#2\end{matrix}}}^{#1}}$}#2}

\begin{document}

\begin{equation}
   \left[ {\begin{array}{ccccccccc}
   0 & \cdots & 0
   & \bovermat{\text{columns }q_1,\ldots,q_\ell}{1 & \cdots & 1} 
   & 0 & \cdots & 0\\
   0 & \cdots & 0 & 1 & \cdots & 1 & 0 & \cdots & 0\\
   \vdots & & \vdots & \vdots & & \vdots & & & \vdots \\
   0 & \cdots & 0 & 1 & \cdots & 1 & 0 & \cdots & 0\\
  \end{array} } \right]
\end{equation}

\end{document}

MWE 输出

答案1

您也可以使用blkarray,它具有更大的灵活性。

\documentclass{article}
\usepackage{blkarray}
\usepackage{amsmath}

\begin{document}

\[
\begin{blockarray}{ccccccccc}
& & & & \makebox[0pt]{$\overbrace{\rule{4em}{0pt}}^{\text{columns }q_1,\ldots,q_\ell}$} & & & & \\
\begin{block}{[ccccccccc]}
   0    & \cdots &   0    &   1    & \cdots &   1    & 0 & \cdots &   0    \\
   0    & \cdots &   0    &   1    & \cdots &   1    & 0 & \cdots &   0    \\
 \vdots &        & \vdots & \vdots &        & \vdots &   &        & \vdots \\
   0    & \cdots &   0    &   1    & \cdots &   1    & 0 & \cdots &   0    \\
\end{block}
\end{blockarray}
\]

\end{document}

在此处输入图片描述

答案2

正如 Phelype Oleinik 在评论部分所建议的那样,解决方案是删除&之前的\bovermat并将其放入 的第二个参数中\bovermat

\documentclass{article}

\usepackage{amsmath}

% command for overbrace in matrix
\newcommand\bovermat[2]{%
  \makebox[0pt][l]{$\smash{\overbrace{\phantom{%
    \begin{matrix}#2\end{matrix}}}^{#1}}$}#2}

\begin{document}

\begin{equation}   \left[ {\begin{array}{ccccccccc}
   0 & \cdots & 0
   \bovermat{ \text{columns }q_1,\ldots,q_\ell}{& 1 & \cdots & 1} 
   & 0 & \cdots & 0\\
   0 & \cdots & 0 & 1 & \cdots & 1 & 0 & \cdots & 0\\
   \vdots & & \vdots & \vdots & & \vdots & & & \vdots \\
   0 & \cdots & 0 & 1 & \cdots & 1 & 0 & \cdots & 0\\
  \end{array} } \right]

\end{equation}

\end{document}

MWE 已校正

相关内容