块阵列中的着色列

块阵列中的着色列

我想为使用 创建的 3x3 矩阵中的各列着色\blockarray。我希望为第一列赋予一种颜色,为第二列和第三列赋予第二种颜色。我找到了两个答案这个问题有帮助,但是,它们似乎无法解决我的问题。

\columncolor但是,我不知何故无法使用该xcolor包在这种环境下工作以获得第一个答案:

\documentclass{article}
\usepackage{amsmath}
\usepackage[table]{xcolor}
\usepackage{blkarray} % blockarrays; 

\begin{document}

\begin{align*}
\begin{blockarray}{ccc}
        \begin{block}{\BAmulticolumn{3}{>{}c}}
            \oint_{S^\textnormal{rec}}&\\
        \end{block}
        \begin{block}{(>{\scriptstyle}>{\columncolor{olive!20}}c>{\scriptstyle}c>{\scriptstyle}c)}
            a &\cdots & b\\
            \vdots&\ddots&\vdots\\
            cd &\cdots&N_\textnormal e\\
        \end{block}
\end{blockarray}
\end{align*}

\end{document}

它抛出以下错误消息:

! Undefined control sequence.
\BA@.[10002,1]u ...\BA@bdollar \hfil \columncolor
{olive!20}\scriptstyle
l.19 \end{align*}

使用该包的第二个答案hf-tikz\tikzmark未能解决问题,因为它无法解决不同长度的列条目。

有人可以帮助我让它在该\blockarray环境中工作吗?

答案1

我不知道如何解决这个问题\blockarray,但我认为你可以用 TikZ 达到你想要的结果matrix of math nodes

\documentclass{article}
\usepackage{amsmath}
\usepackage[table]{xcolor}
\usepackage{blkarray} % blockarrays; 

\usepackage{tikz}
\usetikzlibrary{matrix, positioning}

\begin{document}
\begin{tikzpicture}
    \node (A) {$\oint_{S^\textnormal{rec}}$};
    \matrix[
        below=-2pt of A,
        inner xsep=0pt,
        matrix of math nodes,
        nodes={
            text width=1.2em, 
            text height=1.4ex,
            text depth=.5ex, 
            align=center, 
            font=\scriptsize, 
        },
        left delimiter={(},right delimiter={)},
        column 1/.style={nodes={fill={olive!20}}}
        ] {
        a &[6pt]\cdots &[6pt] b\\
        \vdots&\ddots&\vdots\\[-4pt]
        cd &\cdots&N_\textnormal e\\
        };
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

{pNiceMatrix}的一个解决方案nicematrix

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\[\begin{pNiceMatrix}[first-row,margin]
  \Block{1-*}{\oint_{S^{\text{rec}}}} \\
  \Block[fill=olive!20,rounded-corners]{3-1}{} a &  \cdots & b \\
  \vdots & \ddots & \vdots \\
  cd & \cdots & N_{\text{e}}
\end{pNiceMatrix}\]

\end{document}

第一个代码的输出

nicematrix虚线系统也一样。

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\[\begin{pNiceMatrix}[first-row,margin,xdots/shorten=2mm]
  \Block{1-*}{\oint_{S^{\text{rec}}}} \\
  \Block[fill=olive!20,rounded-corners]{3-1}{} a &  \Cdots & b \\
  \Vdots & \Ddots & \Vdots \\
  cd & \Cdots & N_{\text{e}}
\end{pNiceMatrix}\]

\end{document}

第二段代码的输出

相关内容