¿Cómo hacer que el contenido de \CodeAfter en nicematrix se escriba como fondo?

¿Cómo hacer que el contenido de \CodeAfter en nicematrix se escriba como fondo?

Estoy intentando publicar el contenido \CodeAftercomo nicematrixfondo. Generalmente quiero resultados similares a los que obtenemos \cellcolor, pero con la flexibilidad del tikzpictureentorno.

ingrese la descripción de la imagen aquí

En la imagen de arriba vemos que C_1_1no es visible.

\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}

En principio, es posible componer el fondo de los nodos 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}

Respuesta1

Tienes posibilidades de remolque:

  1. Es posible, como sugirió Jasper Habicht, dividir las cosas y usar tanto como \CodeBeforey \CodeAfter.

  2. También es posible usar a \Block(por supuesto, debe colocar la instrucción en la celda y tal vez considere que saturará su matriz 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 es habitual nicematrix, necesitas varias compilaciones.

Salida del código anterior

Respuesta2

Por si quieres hacerlo exclusivamente con \CodeBeforey \CodeAfter, aquí lo tienes:

Código después y código antes

\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}

información relacionada