Como obter o conteúdo \CodeAfter em nicematrix para ser digitado como plano de fundo?

Como obter o conteúdo \CodeAfter em nicematrix para ser digitado como plano de fundo?

Estou tentando postar o conteúdo \CodeAftercomo nicematrixplano de fundo. Geralmente quero resultados semelhantes aos que obtemos \cellcolor, mas com a flexibilidade do tikzpictureambiente

insira a descrição da imagem aqui

Na imagem acima, vemos que C_1_1não é visível

\documentclass[amsthm]{book}

\usepackage[x11names]{xcolor}

\usepackage{tikz}

\usepackage{nicematrix}

\NiceMatrixOptions{hvlines, rules/color=[gray]{0.95}}

\begin{document}

\begin{equation*}
    \begin{bNiceMatrix}[margin]
        C_{\arabic{iRow},\arabic{jCol}} & C_{\arabic{iRow},\arabic{jCol}} & C_{\arabic{iRow},\arabic{jCol}}
        \\
        C_{\arabic{iRow},\arabic{jCol}} & C_{\arabic{iRow},\arabic{jCol}} & C_{\arabic{iRow},\arabic{jCol}}
        \\
        C_{\arabic{iRow},\arabic{jCol}} & C_{\arabic{iRow},\arabic{jCol}} & C_{\arabic{iRow},\arabic{jCol}}
        \CodeAfter
        \begin{tikzpicture}[thick]
            \draw[IndianRed1, fill=IndianRed1!11] (1-|1) rectangle (2-|2);
        \end{tikzpicture}
    \end{bNiceMatrix}
\end{equation*}

\end{document}

Em princípio, é possível compor o plano de fundo para nós tikz

\documentclass[amsthm]{book}

\usepackage[x11names]{xcolor}

\usepackage{tikz}
\usetikzlibrary{backgrounds}

\begin{document}

\begin{tikzpicture}[baseline]
    
    \node[align=flush left, inner xsep=0pt, inner ysep=1pt, outer xsep=0pt, outer ysep=0pt, anchor=base] (basmah) {text};
    
    \begin{pgfonlayer}{background}
        
        \fill[Ivory1, opacity=0.75] (basmah.south west) rectangle (basmah.north east);
        
    \end{pgfonlayer}
    
\end{tikzpicture}

\end{document}

Responder1

Você tem possibilidades de reboque:

  1. É possível, como sugerido por Jasper Habicht, dividir as coisas e usar ambos \CodeBeforee \CodeAfter.

  2. Também é possível usar a \Block(claro, você tem que colocar a instrução na célula e talvez você considere que isso irá desorganizar seu array principal).

\documentclass[amsthm]{book}
\usepackage[x11names]{xcolor}
\usepackage{tikz}
\usepackage{nicematrix}

\NiceMatrixOptions{hvlines, rules/color=[gray]{0.95}}

\begin{document}

\begin{equation*}
    \begin{bNiceMatrix}[margin]
        \Block[fill=IndianRed1!11,draw = IndianRed1,line-width=1pt]{}{C_{\arabic{iRow},\arabic{jCol}}} & C_{\arabic{iRow},\arabic{jCol}} & C_{\arabic{iRow},\arabic{jCol}}
        \\
        C_{\arabic{iRow},\arabic{jCol}} & C_{\arabic{iRow},\arabic{jCol}} & C_{\arabic{iRow},\arabic{jCol}}
        \\
        C_{\arabic{iRow},\arabic{jCol}} & C_{\arabic{iRow},\arabic{jCol}} & C_{\arabic{iRow},\arabic{jCol}}
    \end{bNiceMatrix}
\end{equation*}

\end{document}

Como sempre nicematrix, você precisa de várias compilações.

Saída do código acima

Responder2

Caso você queira fazer isso exclusivamente com \CodeBeforee \CodeAfter, aqui está:

CodeAfter e CodeBefore

\documentclass[amsthm]{book}

\usepackage[x11names]{xcolor}

\usepackage{tikz}

\usepackage{nicematrix}

\NiceMatrixOptions{hvlines, rules/color=[gray]{0.95}}

\begin{document}

\begin{equation*}
    \begin{bNiceMatrix}[margin]
    \CodeBefore
        \rectanglecolor{IndianRed1!11}{1-1}{1-1}
    \Body
        C_{\arabic{iRow},\arabic{jCol}} & C_{\arabic{iRow},\arabic{jCol}} & C_{\arabic{iRow},\arabic{jCol}}
        \\
        C_{\arabic{iRow},\arabic{jCol}} & C_{\arabic{iRow},\arabic{jCol}} & C_{\arabic{iRow},\arabic{jCol}}
        \\
        C_{\arabic{iRow},\arabic{jCol}} & C_{\arabic{iRow},\arabic{jCol}} & C_{\arabic{iRow},\arabic{jCol}}
    \CodeAfter
        \tikz \draw[thick,IndianRed1] (1-|1) rectangle (2-|2);
    \end{bNiceMatrix}
\end{equation*}

\end{document}

informação relacionada