Выделение полос матрицы с помощью tikz

Выделение полос матрицы с помощью tikz

Я пытаюсь выделить определенные диагонали полос матрицы в латексе с помощью nicematrixи tikz, но у меня возникают проблемы с правильной подгонкой полос к матрице.

Кто-нибудь знает, что я делаю не так? Смотрите код ниже:

\documentclass{article}
\usepackage{nicematrix}
\usepackage{tikz}
\usetikzlibrary{fit}
\usetikzlibrary{shapes.geometric}

\begin{document}

\begin{equation}
\setlength{\arraycolsep}{0pt}
\begin{bNiceArray}{ccccccc}[columns-width=auto]
d_{1}&e_{u,1}&\cdots&&&&0\\
c_{l,2}&d_{2}&e_{u,2}&\cdots&&&\vdots\\
b_{l,3}&c_{l3}&d_{3}&e_{u,3}&\cdots&&\vdots\\
a_{l,4}&b_{l,4}&c_{l,4}&d_{4}&e_{u,4}&\cdots&\vdots\\
0&&&&\ddots&&\vdots\\
\vdots&&a_{l,n-1}&b_{l,n-1}&c_{l,n-1}&d_{n-1}&e_{u,n-1}\\
\vdots&\cdots&&a_{l,n}&b_{l,n}&c_{l,n}&d_{n}\\
\CodeAfter
  \begin{tikzpicture}
  \node [draw=red, rounded corners=2pt, inner ysep = 1pt,
       rotate fit=-35, fit = (1-1) (7-7) ] {} ;
\node [trapezium, trapezium angle=55, draw=blue, inner ysep = 0pt, rounded corners=2pt,rotate fit=-35,fit= (1-2) (6-7) ]{};
\node [trapezium, trapezium angle=55, draw=green, inner xsep = 0pt,inner ysep = 0pt, rounded corners=2pt,rotate fit=-215,fit= (2-1)(4-1)(7-6)(7-4) ]{};
  \end{tikzpicture}
\end{bNiceArray}
\end{equation}

\end{document}

и в итоге получим уравнение, выглядящее следующим образом:

выходной сигнал матрицы полосы

В идеале мне бы хотелось, чтобы зеленые и синие трапеции аккуратно вписывались в саму матрицу и не выходили за ее пределы.

Думаю, было бы лучше, если бы ширина столбцов и строк матрицы была одинаковой, но я не знаю, как это сделать.

Спасибо!

решение1

Предложение.

\documentclass{article}
\usepackage{nicematrix}
\usepackage{tikz}

\begin{document}

\begin{equation}
\renewcommand{\arraystretch}{2}
\begin{bNiceArray}{ccccccc}[columns-width=auto,extra-margin=6pt]
d_{1}&e_{u,1}&\cdots&&&&0\\
c_{l,2}&d_{2}&e_{u,2}&\cdots&&&\vdots\\
b_{l,3}&c_{l3}&d_{3}&e_{u,3}&\cdots&&\vdots\\
a_{l,4}&b_{l,4}&c_{l,4}&d_{4}&e_{u,4}&\cdots&\vdots\\
0&&&&\ddots&&\vdots\\
\vdots&&a_{l,n-1}&b_{l,n-1}&c_{l,n-1}&d_{n-1}&e_{u,n-1}\\
\vdots&\cdots&&a_{l,n}&b_{l,n}&c_{l,n}&d_{n}\\
\CodeAfter
  \begin{tikzpicture} 
  \draw [red] ([yshift=-2mm]1-|1.5) -- ([yshift=-2mm]7.5-|8) |- (8-|7.5) -- (1.5-|1) |- cycle ; 
  \draw [blue] ([yshift=-1mm]1-|1.5) -- ([yshift=-1mm]7.5-|8) -- (6.5-|8) -- ([yshift=-1mm]1-|2.5) -- cycle ;
  \draw [green] ([yshift=-1mm]1.5-|1) -- ([yshift=-1mm]8-|7.5) -- ([yshift=-1mm]8-|4.5) -- (4.5-|1) -- cycle ; 
  \end{tikzpicture}
\end{bNiceArray}
\end{equation}

\end{document}

Вывод кода выше

Связанный контент