Я пытаюсь разместить содержимое в \CodeAfter
в nicematrix
качестве фона. Я обычно хочу получить результаты, похожие на те, что мы получаем с \cellcolor
, но с гибкостью tikzpicture
среды
На изображении выше мы видим, что C_1_1
не видно
\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}
В принципе, возможно набрать фон для узлов 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}
решение1
У вас есть возможности буксировки:
Можно, как предлагает Джаспер Хабихт, разделить все и использовать
\CodeBefore
оба\CodeAfter
.Также можно использовать
\Block
(конечно, вам придется поместить инструкцию в ячейку и, возможно, вы посчитаете, что это загромоздит ваш основной массив).
\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}
Как обычно nicematrix
, вам понадобится несколько компиляций.
решение2
На всякий случай, если вы хотите сделать это исключительно с \CodeBefore
и \CodeAfter
, вот он:
\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}