Wie kann ich \CodeAfter-Inhalte in Nicematrix als Hintergrund festlegen?

Wie kann ich \CodeAfter-Inhalte in Nicematrix als Hintergrund festlegen?

Ich versuche, den Inhalt in als Hintergrund zu veröffentlichen \CodeAfter. nicematrixIch möchte im Allgemeinen ähnliche Ergebnisse wie mit \cellcolor, aber mit der Flexibilität der tikzpictureUmgebung

Bildbeschreibung hier eingeben

Im obigen Bild sehen wir, dass C_1_1nicht sichtbar ist

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

Im Prinzip ist es möglich, den Hintergrund für Tikz-Knoten festzulegen

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

Antwort1

Sie haben zwei Möglichkeiten:

  1. Es ist möglich, wie von Jasper Habicht vorgeschlagen, die Dinge aufzuteilen und sowohl als auch zu \CodeBeforeverwenden \CodeAfter.

  2. Es ist auch möglich, ein zu verwenden \Block(natürlich müssen Sie die Anweisung in die Zelle einfügen und vielleicht bedenken Sie, dass dies Ihr Hauptarray überladen würde).

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

Wie bei üblich nicematrix, sind mehrere Zusammenstellungen erforderlich.

Ausgabe des obigen Codes

Antwort2

\CodeBeforeNur für den Fall, dass Sie es ausschließlich mit und machen möchten \CodeAfter, hier ist es:

CodeAfter und 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}

verwandte Informationen