Matrix using tikz package












6















I am working on my dissertation and I have no idea how I should do this in LaTeX.



And the shading definitely is challenging.



enter image description here



I have only been able to do this so far, I am still an amateur at it.



usepackage{color}
newcommandx{times}
newcommandy{cellcolor{green}}

begin{document}
begin{equation*}
left[
begin{array}{ccc}
y & y & y \
& y & y R \
& & y \
end{array}
right]left[
begin{array}{c}
\
a_j \
\
end{array}
right]=
end{equation*}
end{document}


output










share|improve this question









New contributor




Tarini Ramsewak is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.

























    6















    I am working on my dissertation and I have no idea how I should do this in LaTeX.



    And the shading definitely is challenging.



    enter image description here



    I have only been able to do this so far, I am still an amateur at it.



    usepackage{color}
    newcommandx{times}
    newcommandy{cellcolor{green}}

    begin{document}
    begin{equation*}
    left[
    begin{array}{ccc}
    y & y & y \
    & y & y R \
    & & y \
    end{array}
    right]left[
    begin{array}{c}
    \
    a_j \
    \
    end{array}
    right]=
    end{equation*}
    end{document}


    output










    share|improve this question









    New contributor




    Tarini Ramsewak is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.























      6












      6








      6


      1






      I am working on my dissertation and I have no idea how I should do this in LaTeX.



      And the shading definitely is challenging.



      enter image description here



      I have only been able to do this so far, I am still an amateur at it.



      usepackage{color}
      newcommandx{times}
      newcommandy{cellcolor{green}}

      begin{document}
      begin{equation*}
      left[
      begin{array}{ccc}
      y & y & y \
      & y & y R \
      & & y \
      end{array}
      right]left[
      begin{array}{c}
      \
      a_j \
      \
      end{array}
      right]=
      end{equation*}
      end{document}


      output










      share|improve this question









      New contributor




      Tarini Ramsewak is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.












      I am working on my dissertation and I have no idea how I should do this in LaTeX.



      And the shading definitely is challenging.



      enter image description here



      I have only been able to do this so far, I am still an amateur at it.



      usepackage{color}
      newcommandx{times}
      newcommandy{cellcolor{green}}

      begin{document}
      begin{equation*}
      left[
      begin{array}{ccc}
      y & y & y \
      & y & y R \
      & & y \
      end{array}
      right]left[
      begin{array}{c}
      \
      a_j \
      \
      end{array}
      right]=
      end{equation*}
      end{document}


      output







      tikz-pgf math-mode equations matrices






      share|improve this question









      New contributor




      Tarini Ramsewak is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question









      New contributor




      Tarini Ramsewak is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question








      edited 2 days ago







      Tarini Ramsewak













      New contributor




      Tarini Ramsewak is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 2 days ago









      Tarini RamsewakTarini Ramsewak

      334




      334




      New contributor




      Tarini Ramsewak is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      Tarini Ramsewak is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      Tarini Ramsewak is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






















          2 Answers
          2






          active

          oldest

          votes


















          5














          With TikZ matrix:



          documentclass{article}
          usepackage{amsmath}
          usepackage{tikz}
          usetikzlibrary{matrix, positioning, patterns, backgrounds}
          tikzset{
          every matrix/.append style={
          matrix of math nodes,
          nodes in empty cells,
          inner sep=0pt,
          outer sep=0pt,
          column sep=-pgflinewidth,
          row sep=-pgflinewidth,
          },
          mylargenode/.style={
          text centered,
          text width=30pt,
          text height=20pt,
          text depth=10pt,
          },
          mylongnode/.style={
          text centered,
          text width=20pt,
          text height=40pt,
          text depth=30pt,
          },
          mysmallnode/.style={
          text centered,
          text width=20pt,
          text height=20pt,
          text depth=10pt,
          },
          mylonglargenode/.style={
          text centered,
          text width=30pt,
          text height=40pt,
          text depth=30pt,
          },
          }

          begin{document}
          With delimiters like in your image:
          [
          begin{tikzpicture}
          matrix[
          nodes={mylargenode},
          column 6/.style={nodes={mysmallnode}},
          row 6/.style={nodes={mylonglargenode}}
          ] (A) {%
          &&&&&|[draw=blue, fill=blue!10!white]| \
          &&&&&|[draw=blue, fill=blue!30!white]|\
          &&&&&|[draw=blue, fill=blue!50!white]|\
          &&&&&|[draw=blue,dotted]| \
          &&&&&|[draw=blue, fill=blue!70!white]|\
          &&&&& |[mylongnode,pattern=crosshatch,pattern color=blue!40!white, draw=blue]|Dot{F}\
          };
          begin{scope}[on background layer]
          foreach ind in {1,2,3,5}
          {
          draw[green!70!black,fill=green!40!lightgray] (A-ind-ind.north west) -- (A-ind-ind.north east) -- (A-ind-ind.south east) -- cycle;
          node[anchor=north east] at (A-ind-ind.north east) {R};
          }
          end{scope}
          draw[dotted, green!70!black] (A-4-4.north west) -- (A-4-4.north east) -- (A-4-4.south east) -- cycle;
          node[font=Huge,shift={(-1,-2)}] at (A) {$0$};
          node[font=Huge,shift={(1,3)}] at (A) {$0$};
          matrix[
          right =of A.north east,
          anchor=north west,
          nodes={mysmallnode}
          ] (B) {%
          underline{a}_1 \
          underline{a}_2 \
          underline{a}_3 \
          \
          underline{a}_M\
          underline{b}\
          };
          foreach ind in {1,2,...,5}{
          draw (B-ind-1.south west) -- (B-ind-1.south east);
          }
          draw[dotted] (B-4-1.north) -- (B-4-1.south);
          matrix[
          right =4em of B.north east,
          anchor=north west,
          nodes={draw,mysmallnode}
          ] (C) {%
          |[fill=yellow!10!white]|\
          |[fill=yellow!30!white]|\
          |[fill=yellow!50!white]|\
          \
          |[fill=yellow!70!white]|\
          |[mylongnode, pattern=horizontal lines, pattern color=yellow!90!white]|underline{Dot{f}}\
          };
          path (B-4-1) -- node[midway] {$=$} (C-4-1);
          draw[dotted] (C-4-1.north) -- (C-4-1.south);
          % delimiters:
          foreach mymatr in {A,B,C}
          {
          draw[very thick] ([xshift=4pt]mymatr.north west) -- (mymatr.north west) -- (mymatr.south west) -- ([xshift=4pt]mymatr.south west);
          draw[very thick] ([xshift=-4pt]mymatr.north east) -- (mymatr.north east) -- (mymatr.south east) -- ([xshift=-4pt]mymatr.south east);
          }
          end{tikzpicture}
          ]

          Or with ordinary delimiter:
          [
          begin{tikzpicture}[
          every matrix/.append style={
          left delimiter={[},
          right delimiter={]},
          }
          ]
          matrix[
          nodes={mylargenode},
          column 6/.style={nodes={mysmallnode}},
          row 6/.style={nodes={mylonglargenode}}
          ] (A) {%
          &&&&&|[draw=blue, fill=blue!10!white]| \
          &&&&&|[draw=blue, fill=blue!30!white]|\
          &&&&&|[draw=blue, fill=blue!50!white]|\
          &&&&&|[draw=blue,dotted]| \
          &&&&&|[draw=blue, fill=blue!70!white]|\
          &&&&& |[mylongnode,pattern=crosshatch,pattern color=blue!40!white, draw=blue]|Dot{F}\
          };
          begin{scope}[on background layer]
          foreach ind in {1,2,3,5}
          {
          draw[green!70!black,fill=green!40!lightgray] (A-ind-ind.north west) -- (A-ind-ind.north east) -- (A-ind-ind.south east) -- cycle;
          node[anchor=north east] at (A-ind-ind.north east) {R};
          }
          end{scope}
          draw[dotted, green!70!black] (A-4-4.north west) -- (A-4-4.north east) -- (A-4-4.south east) -- cycle;
          node[font=Huge,shift={(-1,-2)}] at (A) {$0$};
          node[font=Huge,shift={(1,3)}] at (A) {$0$};
          matrix[
          right =of A.north east,
          anchor=north west,
          nodes={mysmallnode}
          ] (B) {%
          underline{a}_1 \
          underline{a}_2 \
          underline{a}_3 \
          \
          underline{a}_M\
          underline{b}\
          };
          foreach ind in {1,2,...,5}{
          draw (B-ind-1.south west) -- (B-ind-1.south east);
          }
          draw[dotted] (B-4-1.north) -- (B-4-1.south);
          matrix[
          right =4em of B.north east,
          anchor=north west,
          nodes={draw,mysmallnode}
          ] (C) {%
          |[fill=yellow!10!white]|\
          |[fill=yellow!30!white]|\
          |[fill=yellow!50!white]|\
          \
          |[fill=yellow!70!white]|\
          |[mylongnode, pattern=horizontal lines, pattern color=yellow!90!white]|underline{Dot{f}}\
          };
          path (B-4-1) -- node[midway] {$=$} (C-4-1);
          draw[dotted] (C-4-1.north) -- (C-4-1.south);
          end{tikzpicture}
          ]
          end{document}


          enter image description here






          share|improve this answer
























          • How nice is yours, too. I'll vote for it now.

            – Sebastiano
            2 days ago






          • 1





            @Sebastiano Thank you!

            – CarLaTeX
            2 days ago











          • I used this one in my dissertation and I am very happy with the result.

            – Tarini Ramsewak
            yesterday













          • Thank you so much!

            – Tarini Ramsewak
            yesterday











          • @TariniRamsewak You're welcome! I'm happy my answer is useful.

            – CarLaTeX
            yesterday



















          12














          It is indeed a bit tedious. (EDIT: Fixed the first R to become math mode, mille grazie to @Sebastiano!)



          documentclass[tikz,border=3.14mm]{standalone}
          usetikzlibrary{positioning,backgrounds,patterns}
          begin{document}
          begin{tikzpicture}
          begin{scope}[local bounding box=mat1]
          path node (R0) {$R$} foreach X [remember=X as lastX (initially 0)] in
          {1,...,4}
          {ifnumX=3
          node[below right=1.5em of RlastX] (RX) {$phantom{R}$}
          else
          node[below right=1.5em of RlastX] (RX) {$R$}
          fi
          };
          begin{scope}[on background layer]
          draw[fill=green!70!black]
          foreach X in {0,1,2,4} {
          ([xshift=-1em]RX.north west) -- ([yshift=-1em]RX.south east)
          coordinate(bX)
          |- cycle};
          draw[densely dotted] ([xshift=-1em]R3.north west) -- ([yshift=-1em]R3.south east)
          coordinate(b3) |- cycle;
          end{scope}
          node[pattern=crosshatch,pattern color=purple,anchor=north west,
          minimum height=6em] (F) at ([yshift=-1em]R4.south east) {$F$};
          draw[densely dotted] ([yshift=-1em]R3.south east-|R4.south east)
          rectangle (F.east|-R3.north);
          foreach X [evaluate=X as Y using {int(40+10*X)}] in {0,1,2,4}
          {draw[fill=purple!Y] ([yshift=-1em]RX.south east-|R4.south east)
          rectangle (F.east|-RX.north);}
          end{scope}
          path (mat1.south west) -- (mat1.north east)
          node[pos=0.3,font=Large] {$0$} node[pos=0.7,font=Large] {$0$};
          draw[thick] ([xshift=0.7em]mat1.north west) -| (mat1.south west) -- ++ (0.7em,0)
          ([xshift=-0.7em]mat1.north east) -| (mat1.south east) -- ++ (-0.7em,0);
          %
          begin{scope}[local bounding box=mat2]
          foreach X [remember=X as lastX (initially 0)] in {1,2,3}
          {path ([xshift=1em]mat1.east|-RlastX.north) --
          ([xshift=2.5em]mat1.east|-blastX) node[midway] (aX) {$a_{X}$};}
          path ([xshift=1em]mat1.east|-R4.north) --
          ([xshift=2.5em]mat1.east|-b4) node[midway] (aM) {$a_{M}$};
          node[below=0.5em of aM] (b) {$b$};
          end{scope}
          draw[thick] ([xshift=0.5em]mat2.north west) -| (mat2.south west) -- ++
          (0.5em,0)
          ([xshift=-0.5em]mat2.north east) -| (mat2.south east) -- ++ (-0.5em,0);
          foreach X in {0,...,4}
          {draw (mat2.west|-bX) -- (mat2.east|-bX);}
          %
          node[anchor=west] (eq) at (mat2.east|-mat1.center) {$=$};
          %
          begin{scope}[local bounding box=mat3]
          node[pattern=dots,anchor=north west,pattern color=yellow!60!orange,
          minimum height=6em] (f) at ([xshift=0.1em]eq.east|-F.north) {$f$};
          foreach X [remember=X as lastX (initially 0),
          evaluate=X as Y using {int(30*X+10)}] in {1,2,3}
          {fill[yellow!Y] ([xshift=0.1em]eq.east|-RlastX.north) rectangle
          (f.east|-blastX); }
          fill[yellow] ([xshift=0.1em]eq.east|-R4.north) rectangle
          (f.east|-b4);
          draw[densely dotted] (f.center|-b2) -- (f.center|-b3);
          end{scope}
          foreach X in {0,...,4}
          {draw (mat3.west|-bX) -- (mat3.east|-bX);}
          draw[thick] ([xshift=0.3em]mat3.north west) -| (mat3.south west) -- ++
          (0.3em,0)
          ([xshift=-0.3em]mat3.north east) -| (mat3.south east) -- ++ (-0.3em,0);
          end{tikzpicture}
          end{document}


          enter image description here






          share|improve this answer





















          • 1





            Spectacular! There is the first R on the top left that is not in math-mode. :-)

            – Sebastiano
            2 days ago











          • @Sebastiano Mille grazie!

            – marmot
            2 days ago






          • 1





            @JouleV Thanks! The second code shouldn't be there so I removed it. (I have one file for answers and accidentally copied the code for another answer, too.)

            – marmot
            2 days ago











          • I hope I've been of some help to you. This is what I so much regret about my mistakes, which are the result of naivety and which, by emphasizing my mistakes, the haters find fertile ground in my regard. Peraphs is better "grazie mille". Why? See this link youtube.com/watch?v=KvS_BVda9ww. :-)

            – Sebastiano
            2 days ago













          • Thank you very much, this has been useful. I learnt quite a few things.

            – Tarini Ramsewak
            yesterday











          Your Answer








          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "85"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });






          Tarini Ramsewak is a new contributor. Be nice, and check out our Code of Conduct.










          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f479895%2fmatrix-using-tikz-package%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          2 Answers
          2






          active

          oldest

          votes








          2 Answers
          2






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          5














          With TikZ matrix:



          documentclass{article}
          usepackage{amsmath}
          usepackage{tikz}
          usetikzlibrary{matrix, positioning, patterns, backgrounds}
          tikzset{
          every matrix/.append style={
          matrix of math nodes,
          nodes in empty cells,
          inner sep=0pt,
          outer sep=0pt,
          column sep=-pgflinewidth,
          row sep=-pgflinewidth,
          },
          mylargenode/.style={
          text centered,
          text width=30pt,
          text height=20pt,
          text depth=10pt,
          },
          mylongnode/.style={
          text centered,
          text width=20pt,
          text height=40pt,
          text depth=30pt,
          },
          mysmallnode/.style={
          text centered,
          text width=20pt,
          text height=20pt,
          text depth=10pt,
          },
          mylonglargenode/.style={
          text centered,
          text width=30pt,
          text height=40pt,
          text depth=30pt,
          },
          }

          begin{document}
          With delimiters like in your image:
          [
          begin{tikzpicture}
          matrix[
          nodes={mylargenode},
          column 6/.style={nodes={mysmallnode}},
          row 6/.style={nodes={mylonglargenode}}
          ] (A) {%
          &&&&&|[draw=blue, fill=blue!10!white]| \
          &&&&&|[draw=blue, fill=blue!30!white]|\
          &&&&&|[draw=blue, fill=blue!50!white]|\
          &&&&&|[draw=blue,dotted]| \
          &&&&&|[draw=blue, fill=blue!70!white]|\
          &&&&& |[mylongnode,pattern=crosshatch,pattern color=blue!40!white, draw=blue]|Dot{F}\
          };
          begin{scope}[on background layer]
          foreach ind in {1,2,3,5}
          {
          draw[green!70!black,fill=green!40!lightgray] (A-ind-ind.north west) -- (A-ind-ind.north east) -- (A-ind-ind.south east) -- cycle;
          node[anchor=north east] at (A-ind-ind.north east) {R};
          }
          end{scope}
          draw[dotted, green!70!black] (A-4-4.north west) -- (A-4-4.north east) -- (A-4-4.south east) -- cycle;
          node[font=Huge,shift={(-1,-2)}] at (A) {$0$};
          node[font=Huge,shift={(1,3)}] at (A) {$0$};
          matrix[
          right =of A.north east,
          anchor=north west,
          nodes={mysmallnode}
          ] (B) {%
          underline{a}_1 \
          underline{a}_2 \
          underline{a}_3 \
          \
          underline{a}_M\
          underline{b}\
          };
          foreach ind in {1,2,...,5}{
          draw (B-ind-1.south west) -- (B-ind-1.south east);
          }
          draw[dotted] (B-4-1.north) -- (B-4-1.south);
          matrix[
          right =4em of B.north east,
          anchor=north west,
          nodes={draw,mysmallnode}
          ] (C) {%
          |[fill=yellow!10!white]|\
          |[fill=yellow!30!white]|\
          |[fill=yellow!50!white]|\
          \
          |[fill=yellow!70!white]|\
          |[mylongnode, pattern=horizontal lines, pattern color=yellow!90!white]|underline{Dot{f}}\
          };
          path (B-4-1) -- node[midway] {$=$} (C-4-1);
          draw[dotted] (C-4-1.north) -- (C-4-1.south);
          % delimiters:
          foreach mymatr in {A,B,C}
          {
          draw[very thick] ([xshift=4pt]mymatr.north west) -- (mymatr.north west) -- (mymatr.south west) -- ([xshift=4pt]mymatr.south west);
          draw[very thick] ([xshift=-4pt]mymatr.north east) -- (mymatr.north east) -- (mymatr.south east) -- ([xshift=-4pt]mymatr.south east);
          }
          end{tikzpicture}
          ]

          Or with ordinary delimiter:
          [
          begin{tikzpicture}[
          every matrix/.append style={
          left delimiter={[},
          right delimiter={]},
          }
          ]
          matrix[
          nodes={mylargenode},
          column 6/.style={nodes={mysmallnode}},
          row 6/.style={nodes={mylonglargenode}}
          ] (A) {%
          &&&&&|[draw=blue, fill=blue!10!white]| \
          &&&&&|[draw=blue, fill=blue!30!white]|\
          &&&&&|[draw=blue, fill=blue!50!white]|\
          &&&&&|[draw=blue,dotted]| \
          &&&&&|[draw=blue, fill=blue!70!white]|\
          &&&&& |[mylongnode,pattern=crosshatch,pattern color=blue!40!white, draw=blue]|Dot{F}\
          };
          begin{scope}[on background layer]
          foreach ind in {1,2,3,5}
          {
          draw[green!70!black,fill=green!40!lightgray] (A-ind-ind.north west) -- (A-ind-ind.north east) -- (A-ind-ind.south east) -- cycle;
          node[anchor=north east] at (A-ind-ind.north east) {R};
          }
          end{scope}
          draw[dotted, green!70!black] (A-4-4.north west) -- (A-4-4.north east) -- (A-4-4.south east) -- cycle;
          node[font=Huge,shift={(-1,-2)}] at (A) {$0$};
          node[font=Huge,shift={(1,3)}] at (A) {$0$};
          matrix[
          right =of A.north east,
          anchor=north west,
          nodes={mysmallnode}
          ] (B) {%
          underline{a}_1 \
          underline{a}_2 \
          underline{a}_3 \
          \
          underline{a}_M\
          underline{b}\
          };
          foreach ind in {1,2,...,5}{
          draw (B-ind-1.south west) -- (B-ind-1.south east);
          }
          draw[dotted] (B-4-1.north) -- (B-4-1.south);
          matrix[
          right =4em of B.north east,
          anchor=north west,
          nodes={draw,mysmallnode}
          ] (C) {%
          |[fill=yellow!10!white]|\
          |[fill=yellow!30!white]|\
          |[fill=yellow!50!white]|\
          \
          |[fill=yellow!70!white]|\
          |[mylongnode, pattern=horizontal lines, pattern color=yellow!90!white]|underline{Dot{f}}\
          };
          path (B-4-1) -- node[midway] {$=$} (C-4-1);
          draw[dotted] (C-4-1.north) -- (C-4-1.south);
          end{tikzpicture}
          ]
          end{document}


          enter image description here






          share|improve this answer
























          • How nice is yours, too. I'll vote for it now.

            – Sebastiano
            2 days ago






          • 1





            @Sebastiano Thank you!

            – CarLaTeX
            2 days ago











          • I used this one in my dissertation and I am very happy with the result.

            – Tarini Ramsewak
            yesterday













          • Thank you so much!

            – Tarini Ramsewak
            yesterday











          • @TariniRamsewak You're welcome! I'm happy my answer is useful.

            – CarLaTeX
            yesterday
















          5














          With TikZ matrix:



          documentclass{article}
          usepackage{amsmath}
          usepackage{tikz}
          usetikzlibrary{matrix, positioning, patterns, backgrounds}
          tikzset{
          every matrix/.append style={
          matrix of math nodes,
          nodes in empty cells,
          inner sep=0pt,
          outer sep=0pt,
          column sep=-pgflinewidth,
          row sep=-pgflinewidth,
          },
          mylargenode/.style={
          text centered,
          text width=30pt,
          text height=20pt,
          text depth=10pt,
          },
          mylongnode/.style={
          text centered,
          text width=20pt,
          text height=40pt,
          text depth=30pt,
          },
          mysmallnode/.style={
          text centered,
          text width=20pt,
          text height=20pt,
          text depth=10pt,
          },
          mylonglargenode/.style={
          text centered,
          text width=30pt,
          text height=40pt,
          text depth=30pt,
          },
          }

          begin{document}
          With delimiters like in your image:
          [
          begin{tikzpicture}
          matrix[
          nodes={mylargenode},
          column 6/.style={nodes={mysmallnode}},
          row 6/.style={nodes={mylonglargenode}}
          ] (A) {%
          &&&&&|[draw=blue, fill=blue!10!white]| \
          &&&&&|[draw=blue, fill=blue!30!white]|\
          &&&&&|[draw=blue, fill=blue!50!white]|\
          &&&&&|[draw=blue,dotted]| \
          &&&&&|[draw=blue, fill=blue!70!white]|\
          &&&&& |[mylongnode,pattern=crosshatch,pattern color=blue!40!white, draw=blue]|Dot{F}\
          };
          begin{scope}[on background layer]
          foreach ind in {1,2,3,5}
          {
          draw[green!70!black,fill=green!40!lightgray] (A-ind-ind.north west) -- (A-ind-ind.north east) -- (A-ind-ind.south east) -- cycle;
          node[anchor=north east] at (A-ind-ind.north east) {R};
          }
          end{scope}
          draw[dotted, green!70!black] (A-4-4.north west) -- (A-4-4.north east) -- (A-4-4.south east) -- cycle;
          node[font=Huge,shift={(-1,-2)}] at (A) {$0$};
          node[font=Huge,shift={(1,3)}] at (A) {$0$};
          matrix[
          right =of A.north east,
          anchor=north west,
          nodes={mysmallnode}
          ] (B) {%
          underline{a}_1 \
          underline{a}_2 \
          underline{a}_3 \
          \
          underline{a}_M\
          underline{b}\
          };
          foreach ind in {1,2,...,5}{
          draw (B-ind-1.south west) -- (B-ind-1.south east);
          }
          draw[dotted] (B-4-1.north) -- (B-4-1.south);
          matrix[
          right =4em of B.north east,
          anchor=north west,
          nodes={draw,mysmallnode}
          ] (C) {%
          |[fill=yellow!10!white]|\
          |[fill=yellow!30!white]|\
          |[fill=yellow!50!white]|\
          \
          |[fill=yellow!70!white]|\
          |[mylongnode, pattern=horizontal lines, pattern color=yellow!90!white]|underline{Dot{f}}\
          };
          path (B-4-1) -- node[midway] {$=$} (C-4-1);
          draw[dotted] (C-4-1.north) -- (C-4-1.south);
          % delimiters:
          foreach mymatr in {A,B,C}
          {
          draw[very thick] ([xshift=4pt]mymatr.north west) -- (mymatr.north west) -- (mymatr.south west) -- ([xshift=4pt]mymatr.south west);
          draw[very thick] ([xshift=-4pt]mymatr.north east) -- (mymatr.north east) -- (mymatr.south east) -- ([xshift=-4pt]mymatr.south east);
          }
          end{tikzpicture}
          ]

          Or with ordinary delimiter:
          [
          begin{tikzpicture}[
          every matrix/.append style={
          left delimiter={[},
          right delimiter={]},
          }
          ]
          matrix[
          nodes={mylargenode},
          column 6/.style={nodes={mysmallnode}},
          row 6/.style={nodes={mylonglargenode}}
          ] (A) {%
          &&&&&|[draw=blue, fill=blue!10!white]| \
          &&&&&|[draw=blue, fill=blue!30!white]|\
          &&&&&|[draw=blue, fill=blue!50!white]|\
          &&&&&|[draw=blue,dotted]| \
          &&&&&|[draw=blue, fill=blue!70!white]|\
          &&&&& |[mylongnode,pattern=crosshatch,pattern color=blue!40!white, draw=blue]|Dot{F}\
          };
          begin{scope}[on background layer]
          foreach ind in {1,2,3,5}
          {
          draw[green!70!black,fill=green!40!lightgray] (A-ind-ind.north west) -- (A-ind-ind.north east) -- (A-ind-ind.south east) -- cycle;
          node[anchor=north east] at (A-ind-ind.north east) {R};
          }
          end{scope}
          draw[dotted, green!70!black] (A-4-4.north west) -- (A-4-4.north east) -- (A-4-4.south east) -- cycle;
          node[font=Huge,shift={(-1,-2)}] at (A) {$0$};
          node[font=Huge,shift={(1,3)}] at (A) {$0$};
          matrix[
          right =of A.north east,
          anchor=north west,
          nodes={mysmallnode}
          ] (B) {%
          underline{a}_1 \
          underline{a}_2 \
          underline{a}_3 \
          \
          underline{a}_M\
          underline{b}\
          };
          foreach ind in {1,2,...,5}{
          draw (B-ind-1.south west) -- (B-ind-1.south east);
          }
          draw[dotted] (B-4-1.north) -- (B-4-1.south);
          matrix[
          right =4em of B.north east,
          anchor=north west,
          nodes={draw,mysmallnode}
          ] (C) {%
          |[fill=yellow!10!white]|\
          |[fill=yellow!30!white]|\
          |[fill=yellow!50!white]|\
          \
          |[fill=yellow!70!white]|\
          |[mylongnode, pattern=horizontal lines, pattern color=yellow!90!white]|underline{Dot{f}}\
          };
          path (B-4-1) -- node[midway] {$=$} (C-4-1);
          draw[dotted] (C-4-1.north) -- (C-4-1.south);
          end{tikzpicture}
          ]
          end{document}


          enter image description here






          share|improve this answer
























          • How nice is yours, too. I'll vote for it now.

            – Sebastiano
            2 days ago






          • 1





            @Sebastiano Thank you!

            – CarLaTeX
            2 days ago











          • I used this one in my dissertation and I am very happy with the result.

            – Tarini Ramsewak
            yesterday













          • Thank you so much!

            – Tarini Ramsewak
            yesterday











          • @TariniRamsewak You're welcome! I'm happy my answer is useful.

            – CarLaTeX
            yesterday














          5












          5








          5







          With TikZ matrix:



          documentclass{article}
          usepackage{amsmath}
          usepackage{tikz}
          usetikzlibrary{matrix, positioning, patterns, backgrounds}
          tikzset{
          every matrix/.append style={
          matrix of math nodes,
          nodes in empty cells,
          inner sep=0pt,
          outer sep=0pt,
          column sep=-pgflinewidth,
          row sep=-pgflinewidth,
          },
          mylargenode/.style={
          text centered,
          text width=30pt,
          text height=20pt,
          text depth=10pt,
          },
          mylongnode/.style={
          text centered,
          text width=20pt,
          text height=40pt,
          text depth=30pt,
          },
          mysmallnode/.style={
          text centered,
          text width=20pt,
          text height=20pt,
          text depth=10pt,
          },
          mylonglargenode/.style={
          text centered,
          text width=30pt,
          text height=40pt,
          text depth=30pt,
          },
          }

          begin{document}
          With delimiters like in your image:
          [
          begin{tikzpicture}
          matrix[
          nodes={mylargenode},
          column 6/.style={nodes={mysmallnode}},
          row 6/.style={nodes={mylonglargenode}}
          ] (A) {%
          &&&&&|[draw=blue, fill=blue!10!white]| \
          &&&&&|[draw=blue, fill=blue!30!white]|\
          &&&&&|[draw=blue, fill=blue!50!white]|\
          &&&&&|[draw=blue,dotted]| \
          &&&&&|[draw=blue, fill=blue!70!white]|\
          &&&&& |[mylongnode,pattern=crosshatch,pattern color=blue!40!white, draw=blue]|Dot{F}\
          };
          begin{scope}[on background layer]
          foreach ind in {1,2,3,5}
          {
          draw[green!70!black,fill=green!40!lightgray] (A-ind-ind.north west) -- (A-ind-ind.north east) -- (A-ind-ind.south east) -- cycle;
          node[anchor=north east] at (A-ind-ind.north east) {R};
          }
          end{scope}
          draw[dotted, green!70!black] (A-4-4.north west) -- (A-4-4.north east) -- (A-4-4.south east) -- cycle;
          node[font=Huge,shift={(-1,-2)}] at (A) {$0$};
          node[font=Huge,shift={(1,3)}] at (A) {$0$};
          matrix[
          right =of A.north east,
          anchor=north west,
          nodes={mysmallnode}
          ] (B) {%
          underline{a}_1 \
          underline{a}_2 \
          underline{a}_3 \
          \
          underline{a}_M\
          underline{b}\
          };
          foreach ind in {1,2,...,5}{
          draw (B-ind-1.south west) -- (B-ind-1.south east);
          }
          draw[dotted] (B-4-1.north) -- (B-4-1.south);
          matrix[
          right =4em of B.north east,
          anchor=north west,
          nodes={draw,mysmallnode}
          ] (C) {%
          |[fill=yellow!10!white]|\
          |[fill=yellow!30!white]|\
          |[fill=yellow!50!white]|\
          \
          |[fill=yellow!70!white]|\
          |[mylongnode, pattern=horizontal lines, pattern color=yellow!90!white]|underline{Dot{f}}\
          };
          path (B-4-1) -- node[midway] {$=$} (C-4-1);
          draw[dotted] (C-4-1.north) -- (C-4-1.south);
          % delimiters:
          foreach mymatr in {A,B,C}
          {
          draw[very thick] ([xshift=4pt]mymatr.north west) -- (mymatr.north west) -- (mymatr.south west) -- ([xshift=4pt]mymatr.south west);
          draw[very thick] ([xshift=-4pt]mymatr.north east) -- (mymatr.north east) -- (mymatr.south east) -- ([xshift=-4pt]mymatr.south east);
          }
          end{tikzpicture}
          ]

          Or with ordinary delimiter:
          [
          begin{tikzpicture}[
          every matrix/.append style={
          left delimiter={[},
          right delimiter={]},
          }
          ]
          matrix[
          nodes={mylargenode},
          column 6/.style={nodes={mysmallnode}},
          row 6/.style={nodes={mylonglargenode}}
          ] (A) {%
          &&&&&|[draw=blue, fill=blue!10!white]| \
          &&&&&|[draw=blue, fill=blue!30!white]|\
          &&&&&|[draw=blue, fill=blue!50!white]|\
          &&&&&|[draw=blue,dotted]| \
          &&&&&|[draw=blue, fill=blue!70!white]|\
          &&&&& |[mylongnode,pattern=crosshatch,pattern color=blue!40!white, draw=blue]|Dot{F}\
          };
          begin{scope}[on background layer]
          foreach ind in {1,2,3,5}
          {
          draw[green!70!black,fill=green!40!lightgray] (A-ind-ind.north west) -- (A-ind-ind.north east) -- (A-ind-ind.south east) -- cycle;
          node[anchor=north east] at (A-ind-ind.north east) {R};
          }
          end{scope}
          draw[dotted, green!70!black] (A-4-4.north west) -- (A-4-4.north east) -- (A-4-4.south east) -- cycle;
          node[font=Huge,shift={(-1,-2)}] at (A) {$0$};
          node[font=Huge,shift={(1,3)}] at (A) {$0$};
          matrix[
          right =of A.north east,
          anchor=north west,
          nodes={mysmallnode}
          ] (B) {%
          underline{a}_1 \
          underline{a}_2 \
          underline{a}_3 \
          \
          underline{a}_M\
          underline{b}\
          };
          foreach ind in {1,2,...,5}{
          draw (B-ind-1.south west) -- (B-ind-1.south east);
          }
          draw[dotted] (B-4-1.north) -- (B-4-1.south);
          matrix[
          right =4em of B.north east,
          anchor=north west,
          nodes={draw,mysmallnode}
          ] (C) {%
          |[fill=yellow!10!white]|\
          |[fill=yellow!30!white]|\
          |[fill=yellow!50!white]|\
          \
          |[fill=yellow!70!white]|\
          |[mylongnode, pattern=horizontal lines, pattern color=yellow!90!white]|underline{Dot{f}}\
          };
          path (B-4-1) -- node[midway] {$=$} (C-4-1);
          draw[dotted] (C-4-1.north) -- (C-4-1.south);
          end{tikzpicture}
          ]
          end{document}


          enter image description here






          share|improve this answer













          With TikZ matrix:



          documentclass{article}
          usepackage{amsmath}
          usepackage{tikz}
          usetikzlibrary{matrix, positioning, patterns, backgrounds}
          tikzset{
          every matrix/.append style={
          matrix of math nodes,
          nodes in empty cells,
          inner sep=0pt,
          outer sep=0pt,
          column sep=-pgflinewidth,
          row sep=-pgflinewidth,
          },
          mylargenode/.style={
          text centered,
          text width=30pt,
          text height=20pt,
          text depth=10pt,
          },
          mylongnode/.style={
          text centered,
          text width=20pt,
          text height=40pt,
          text depth=30pt,
          },
          mysmallnode/.style={
          text centered,
          text width=20pt,
          text height=20pt,
          text depth=10pt,
          },
          mylonglargenode/.style={
          text centered,
          text width=30pt,
          text height=40pt,
          text depth=30pt,
          },
          }

          begin{document}
          With delimiters like in your image:
          [
          begin{tikzpicture}
          matrix[
          nodes={mylargenode},
          column 6/.style={nodes={mysmallnode}},
          row 6/.style={nodes={mylonglargenode}}
          ] (A) {%
          &&&&&|[draw=blue, fill=blue!10!white]| \
          &&&&&|[draw=blue, fill=blue!30!white]|\
          &&&&&|[draw=blue, fill=blue!50!white]|\
          &&&&&|[draw=blue,dotted]| \
          &&&&&|[draw=blue, fill=blue!70!white]|\
          &&&&& |[mylongnode,pattern=crosshatch,pattern color=blue!40!white, draw=blue]|Dot{F}\
          };
          begin{scope}[on background layer]
          foreach ind in {1,2,3,5}
          {
          draw[green!70!black,fill=green!40!lightgray] (A-ind-ind.north west) -- (A-ind-ind.north east) -- (A-ind-ind.south east) -- cycle;
          node[anchor=north east] at (A-ind-ind.north east) {R};
          }
          end{scope}
          draw[dotted, green!70!black] (A-4-4.north west) -- (A-4-4.north east) -- (A-4-4.south east) -- cycle;
          node[font=Huge,shift={(-1,-2)}] at (A) {$0$};
          node[font=Huge,shift={(1,3)}] at (A) {$0$};
          matrix[
          right =of A.north east,
          anchor=north west,
          nodes={mysmallnode}
          ] (B) {%
          underline{a}_1 \
          underline{a}_2 \
          underline{a}_3 \
          \
          underline{a}_M\
          underline{b}\
          };
          foreach ind in {1,2,...,5}{
          draw (B-ind-1.south west) -- (B-ind-1.south east);
          }
          draw[dotted] (B-4-1.north) -- (B-4-1.south);
          matrix[
          right =4em of B.north east,
          anchor=north west,
          nodes={draw,mysmallnode}
          ] (C) {%
          |[fill=yellow!10!white]|\
          |[fill=yellow!30!white]|\
          |[fill=yellow!50!white]|\
          \
          |[fill=yellow!70!white]|\
          |[mylongnode, pattern=horizontal lines, pattern color=yellow!90!white]|underline{Dot{f}}\
          };
          path (B-4-1) -- node[midway] {$=$} (C-4-1);
          draw[dotted] (C-4-1.north) -- (C-4-1.south);
          % delimiters:
          foreach mymatr in {A,B,C}
          {
          draw[very thick] ([xshift=4pt]mymatr.north west) -- (mymatr.north west) -- (mymatr.south west) -- ([xshift=4pt]mymatr.south west);
          draw[very thick] ([xshift=-4pt]mymatr.north east) -- (mymatr.north east) -- (mymatr.south east) -- ([xshift=-4pt]mymatr.south east);
          }
          end{tikzpicture}
          ]

          Or with ordinary delimiter:
          [
          begin{tikzpicture}[
          every matrix/.append style={
          left delimiter={[},
          right delimiter={]},
          }
          ]
          matrix[
          nodes={mylargenode},
          column 6/.style={nodes={mysmallnode}},
          row 6/.style={nodes={mylonglargenode}}
          ] (A) {%
          &&&&&|[draw=blue, fill=blue!10!white]| \
          &&&&&|[draw=blue, fill=blue!30!white]|\
          &&&&&|[draw=blue, fill=blue!50!white]|\
          &&&&&|[draw=blue,dotted]| \
          &&&&&|[draw=blue, fill=blue!70!white]|\
          &&&&& |[mylongnode,pattern=crosshatch,pattern color=blue!40!white, draw=blue]|Dot{F}\
          };
          begin{scope}[on background layer]
          foreach ind in {1,2,3,5}
          {
          draw[green!70!black,fill=green!40!lightgray] (A-ind-ind.north west) -- (A-ind-ind.north east) -- (A-ind-ind.south east) -- cycle;
          node[anchor=north east] at (A-ind-ind.north east) {R};
          }
          end{scope}
          draw[dotted, green!70!black] (A-4-4.north west) -- (A-4-4.north east) -- (A-4-4.south east) -- cycle;
          node[font=Huge,shift={(-1,-2)}] at (A) {$0$};
          node[font=Huge,shift={(1,3)}] at (A) {$0$};
          matrix[
          right =of A.north east,
          anchor=north west,
          nodes={mysmallnode}
          ] (B) {%
          underline{a}_1 \
          underline{a}_2 \
          underline{a}_3 \
          \
          underline{a}_M\
          underline{b}\
          };
          foreach ind in {1,2,...,5}{
          draw (B-ind-1.south west) -- (B-ind-1.south east);
          }
          draw[dotted] (B-4-1.north) -- (B-4-1.south);
          matrix[
          right =4em of B.north east,
          anchor=north west,
          nodes={draw,mysmallnode}
          ] (C) {%
          |[fill=yellow!10!white]|\
          |[fill=yellow!30!white]|\
          |[fill=yellow!50!white]|\
          \
          |[fill=yellow!70!white]|\
          |[mylongnode, pattern=horizontal lines, pattern color=yellow!90!white]|underline{Dot{f}}\
          };
          path (B-4-1) -- node[midway] {$=$} (C-4-1);
          draw[dotted] (C-4-1.north) -- (C-4-1.south);
          end{tikzpicture}
          ]
          end{document}


          enter image description here







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 2 days ago









          CarLaTeXCarLaTeX

          33.7k551138




          33.7k551138













          • How nice is yours, too. I'll vote for it now.

            – Sebastiano
            2 days ago






          • 1





            @Sebastiano Thank you!

            – CarLaTeX
            2 days ago











          • I used this one in my dissertation and I am very happy with the result.

            – Tarini Ramsewak
            yesterday













          • Thank you so much!

            – Tarini Ramsewak
            yesterday











          • @TariniRamsewak You're welcome! I'm happy my answer is useful.

            – CarLaTeX
            yesterday



















          • How nice is yours, too. I'll vote for it now.

            – Sebastiano
            2 days ago






          • 1





            @Sebastiano Thank you!

            – CarLaTeX
            2 days ago











          • I used this one in my dissertation and I am very happy with the result.

            – Tarini Ramsewak
            yesterday













          • Thank you so much!

            – Tarini Ramsewak
            yesterday











          • @TariniRamsewak You're welcome! I'm happy my answer is useful.

            – CarLaTeX
            yesterday

















          How nice is yours, too. I'll vote for it now.

          – Sebastiano
          2 days ago





          How nice is yours, too. I'll vote for it now.

          – Sebastiano
          2 days ago




          1




          1





          @Sebastiano Thank you!

          – CarLaTeX
          2 days ago





          @Sebastiano Thank you!

          – CarLaTeX
          2 days ago













          I used this one in my dissertation and I am very happy with the result.

          – Tarini Ramsewak
          yesterday







          I used this one in my dissertation and I am very happy with the result.

          – Tarini Ramsewak
          yesterday















          Thank you so much!

          – Tarini Ramsewak
          yesterday





          Thank you so much!

          – Tarini Ramsewak
          yesterday













          @TariniRamsewak You're welcome! I'm happy my answer is useful.

          – CarLaTeX
          yesterday





          @TariniRamsewak You're welcome! I'm happy my answer is useful.

          – CarLaTeX
          yesterday











          12














          It is indeed a bit tedious. (EDIT: Fixed the first R to become math mode, mille grazie to @Sebastiano!)



          documentclass[tikz,border=3.14mm]{standalone}
          usetikzlibrary{positioning,backgrounds,patterns}
          begin{document}
          begin{tikzpicture}
          begin{scope}[local bounding box=mat1]
          path node (R0) {$R$} foreach X [remember=X as lastX (initially 0)] in
          {1,...,4}
          {ifnumX=3
          node[below right=1.5em of RlastX] (RX) {$phantom{R}$}
          else
          node[below right=1.5em of RlastX] (RX) {$R$}
          fi
          };
          begin{scope}[on background layer]
          draw[fill=green!70!black]
          foreach X in {0,1,2,4} {
          ([xshift=-1em]RX.north west) -- ([yshift=-1em]RX.south east)
          coordinate(bX)
          |- cycle};
          draw[densely dotted] ([xshift=-1em]R3.north west) -- ([yshift=-1em]R3.south east)
          coordinate(b3) |- cycle;
          end{scope}
          node[pattern=crosshatch,pattern color=purple,anchor=north west,
          minimum height=6em] (F) at ([yshift=-1em]R4.south east) {$F$};
          draw[densely dotted] ([yshift=-1em]R3.south east-|R4.south east)
          rectangle (F.east|-R3.north);
          foreach X [evaluate=X as Y using {int(40+10*X)}] in {0,1,2,4}
          {draw[fill=purple!Y] ([yshift=-1em]RX.south east-|R4.south east)
          rectangle (F.east|-RX.north);}
          end{scope}
          path (mat1.south west) -- (mat1.north east)
          node[pos=0.3,font=Large] {$0$} node[pos=0.7,font=Large] {$0$};
          draw[thick] ([xshift=0.7em]mat1.north west) -| (mat1.south west) -- ++ (0.7em,0)
          ([xshift=-0.7em]mat1.north east) -| (mat1.south east) -- ++ (-0.7em,0);
          %
          begin{scope}[local bounding box=mat2]
          foreach X [remember=X as lastX (initially 0)] in {1,2,3}
          {path ([xshift=1em]mat1.east|-RlastX.north) --
          ([xshift=2.5em]mat1.east|-blastX) node[midway] (aX) {$a_{X}$};}
          path ([xshift=1em]mat1.east|-R4.north) --
          ([xshift=2.5em]mat1.east|-b4) node[midway] (aM) {$a_{M}$};
          node[below=0.5em of aM] (b) {$b$};
          end{scope}
          draw[thick] ([xshift=0.5em]mat2.north west) -| (mat2.south west) -- ++
          (0.5em,0)
          ([xshift=-0.5em]mat2.north east) -| (mat2.south east) -- ++ (-0.5em,0);
          foreach X in {0,...,4}
          {draw (mat2.west|-bX) -- (mat2.east|-bX);}
          %
          node[anchor=west] (eq) at (mat2.east|-mat1.center) {$=$};
          %
          begin{scope}[local bounding box=mat3]
          node[pattern=dots,anchor=north west,pattern color=yellow!60!orange,
          minimum height=6em] (f) at ([xshift=0.1em]eq.east|-F.north) {$f$};
          foreach X [remember=X as lastX (initially 0),
          evaluate=X as Y using {int(30*X+10)}] in {1,2,3}
          {fill[yellow!Y] ([xshift=0.1em]eq.east|-RlastX.north) rectangle
          (f.east|-blastX); }
          fill[yellow] ([xshift=0.1em]eq.east|-R4.north) rectangle
          (f.east|-b4);
          draw[densely dotted] (f.center|-b2) -- (f.center|-b3);
          end{scope}
          foreach X in {0,...,4}
          {draw (mat3.west|-bX) -- (mat3.east|-bX);}
          draw[thick] ([xshift=0.3em]mat3.north west) -| (mat3.south west) -- ++
          (0.3em,0)
          ([xshift=-0.3em]mat3.north east) -| (mat3.south east) -- ++ (-0.3em,0);
          end{tikzpicture}
          end{document}


          enter image description here






          share|improve this answer





















          • 1





            Spectacular! There is the first R on the top left that is not in math-mode. :-)

            – Sebastiano
            2 days ago











          • @Sebastiano Mille grazie!

            – marmot
            2 days ago






          • 1





            @JouleV Thanks! The second code shouldn't be there so I removed it. (I have one file for answers and accidentally copied the code for another answer, too.)

            – marmot
            2 days ago











          • I hope I've been of some help to you. This is what I so much regret about my mistakes, which are the result of naivety and which, by emphasizing my mistakes, the haters find fertile ground in my regard. Peraphs is better "grazie mille". Why? See this link youtube.com/watch?v=KvS_BVda9ww. :-)

            – Sebastiano
            2 days ago













          • Thank you very much, this has been useful. I learnt quite a few things.

            – Tarini Ramsewak
            yesterday
















          12














          It is indeed a bit tedious. (EDIT: Fixed the first R to become math mode, mille grazie to @Sebastiano!)



          documentclass[tikz,border=3.14mm]{standalone}
          usetikzlibrary{positioning,backgrounds,patterns}
          begin{document}
          begin{tikzpicture}
          begin{scope}[local bounding box=mat1]
          path node (R0) {$R$} foreach X [remember=X as lastX (initially 0)] in
          {1,...,4}
          {ifnumX=3
          node[below right=1.5em of RlastX] (RX) {$phantom{R}$}
          else
          node[below right=1.5em of RlastX] (RX) {$R$}
          fi
          };
          begin{scope}[on background layer]
          draw[fill=green!70!black]
          foreach X in {0,1,2,4} {
          ([xshift=-1em]RX.north west) -- ([yshift=-1em]RX.south east)
          coordinate(bX)
          |- cycle};
          draw[densely dotted] ([xshift=-1em]R3.north west) -- ([yshift=-1em]R3.south east)
          coordinate(b3) |- cycle;
          end{scope}
          node[pattern=crosshatch,pattern color=purple,anchor=north west,
          minimum height=6em] (F) at ([yshift=-1em]R4.south east) {$F$};
          draw[densely dotted] ([yshift=-1em]R3.south east-|R4.south east)
          rectangle (F.east|-R3.north);
          foreach X [evaluate=X as Y using {int(40+10*X)}] in {0,1,2,4}
          {draw[fill=purple!Y] ([yshift=-1em]RX.south east-|R4.south east)
          rectangle (F.east|-RX.north);}
          end{scope}
          path (mat1.south west) -- (mat1.north east)
          node[pos=0.3,font=Large] {$0$} node[pos=0.7,font=Large] {$0$};
          draw[thick] ([xshift=0.7em]mat1.north west) -| (mat1.south west) -- ++ (0.7em,0)
          ([xshift=-0.7em]mat1.north east) -| (mat1.south east) -- ++ (-0.7em,0);
          %
          begin{scope}[local bounding box=mat2]
          foreach X [remember=X as lastX (initially 0)] in {1,2,3}
          {path ([xshift=1em]mat1.east|-RlastX.north) --
          ([xshift=2.5em]mat1.east|-blastX) node[midway] (aX) {$a_{X}$};}
          path ([xshift=1em]mat1.east|-R4.north) --
          ([xshift=2.5em]mat1.east|-b4) node[midway] (aM) {$a_{M}$};
          node[below=0.5em of aM] (b) {$b$};
          end{scope}
          draw[thick] ([xshift=0.5em]mat2.north west) -| (mat2.south west) -- ++
          (0.5em,0)
          ([xshift=-0.5em]mat2.north east) -| (mat2.south east) -- ++ (-0.5em,0);
          foreach X in {0,...,4}
          {draw (mat2.west|-bX) -- (mat2.east|-bX);}
          %
          node[anchor=west] (eq) at (mat2.east|-mat1.center) {$=$};
          %
          begin{scope}[local bounding box=mat3]
          node[pattern=dots,anchor=north west,pattern color=yellow!60!orange,
          minimum height=6em] (f) at ([xshift=0.1em]eq.east|-F.north) {$f$};
          foreach X [remember=X as lastX (initially 0),
          evaluate=X as Y using {int(30*X+10)}] in {1,2,3}
          {fill[yellow!Y] ([xshift=0.1em]eq.east|-RlastX.north) rectangle
          (f.east|-blastX); }
          fill[yellow] ([xshift=0.1em]eq.east|-R4.north) rectangle
          (f.east|-b4);
          draw[densely dotted] (f.center|-b2) -- (f.center|-b3);
          end{scope}
          foreach X in {0,...,4}
          {draw (mat3.west|-bX) -- (mat3.east|-bX);}
          draw[thick] ([xshift=0.3em]mat3.north west) -| (mat3.south west) -- ++
          (0.3em,0)
          ([xshift=-0.3em]mat3.north east) -| (mat3.south east) -- ++ (-0.3em,0);
          end{tikzpicture}
          end{document}


          enter image description here






          share|improve this answer





















          • 1





            Spectacular! There is the first R on the top left that is not in math-mode. :-)

            – Sebastiano
            2 days ago











          • @Sebastiano Mille grazie!

            – marmot
            2 days ago






          • 1





            @JouleV Thanks! The second code shouldn't be there so I removed it. (I have one file for answers and accidentally copied the code for another answer, too.)

            – marmot
            2 days ago











          • I hope I've been of some help to you. This is what I so much regret about my mistakes, which are the result of naivety and which, by emphasizing my mistakes, the haters find fertile ground in my regard. Peraphs is better "grazie mille". Why? See this link youtube.com/watch?v=KvS_BVda9ww. :-)

            – Sebastiano
            2 days ago













          • Thank you very much, this has been useful. I learnt quite a few things.

            – Tarini Ramsewak
            yesterday














          12












          12








          12







          It is indeed a bit tedious. (EDIT: Fixed the first R to become math mode, mille grazie to @Sebastiano!)



          documentclass[tikz,border=3.14mm]{standalone}
          usetikzlibrary{positioning,backgrounds,patterns}
          begin{document}
          begin{tikzpicture}
          begin{scope}[local bounding box=mat1]
          path node (R0) {$R$} foreach X [remember=X as lastX (initially 0)] in
          {1,...,4}
          {ifnumX=3
          node[below right=1.5em of RlastX] (RX) {$phantom{R}$}
          else
          node[below right=1.5em of RlastX] (RX) {$R$}
          fi
          };
          begin{scope}[on background layer]
          draw[fill=green!70!black]
          foreach X in {0,1,2,4} {
          ([xshift=-1em]RX.north west) -- ([yshift=-1em]RX.south east)
          coordinate(bX)
          |- cycle};
          draw[densely dotted] ([xshift=-1em]R3.north west) -- ([yshift=-1em]R3.south east)
          coordinate(b3) |- cycle;
          end{scope}
          node[pattern=crosshatch,pattern color=purple,anchor=north west,
          minimum height=6em] (F) at ([yshift=-1em]R4.south east) {$F$};
          draw[densely dotted] ([yshift=-1em]R3.south east-|R4.south east)
          rectangle (F.east|-R3.north);
          foreach X [evaluate=X as Y using {int(40+10*X)}] in {0,1,2,4}
          {draw[fill=purple!Y] ([yshift=-1em]RX.south east-|R4.south east)
          rectangle (F.east|-RX.north);}
          end{scope}
          path (mat1.south west) -- (mat1.north east)
          node[pos=0.3,font=Large] {$0$} node[pos=0.7,font=Large] {$0$};
          draw[thick] ([xshift=0.7em]mat1.north west) -| (mat1.south west) -- ++ (0.7em,0)
          ([xshift=-0.7em]mat1.north east) -| (mat1.south east) -- ++ (-0.7em,0);
          %
          begin{scope}[local bounding box=mat2]
          foreach X [remember=X as lastX (initially 0)] in {1,2,3}
          {path ([xshift=1em]mat1.east|-RlastX.north) --
          ([xshift=2.5em]mat1.east|-blastX) node[midway] (aX) {$a_{X}$};}
          path ([xshift=1em]mat1.east|-R4.north) --
          ([xshift=2.5em]mat1.east|-b4) node[midway] (aM) {$a_{M}$};
          node[below=0.5em of aM] (b) {$b$};
          end{scope}
          draw[thick] ([xshift=0.5em]mat2.north west) -| (mat2.south west) -- ++
          (0.5em,0)
          ([xshift=-0.5em]mat2.north east) -| (mat2.south east) -- ++ (-0.5em,0);
          foreach X in {0,...,4}
          {draw (mat2.west|-bX) -- (mat2.east|-bX);}
          %
          node[anchor=west] (eq) at (mat2.east|-mat1.center) {$=$};
          %
          begin{scope}[local bounding box=mat3]
          node[pattern=dots,anchor=north west,pattern color=yellow!60!orange,
          minimum height=6em] (f) at ([xshift=0.1em]eq.east|-F.north) {$f$};
          foreach X [remember=X as lastX (initially 0),
          evaluate=X as Y using {int(30*X+10)}] in {1,2,3}
          {fill[yellow!Y] ([xshift=0.1em]eq.east|-RlastX.north) rectangle
          (f.east|-blastX); }
          fill[yellow] ([xshift=0.1em]eq.east|-R4.north) rectangle
          (f.east|-b4);
          draw[densely dotted] (f.center|-b2) -- (f.center|-b3);
          end{scope}
          foreach X in {0,...,4}
          {draw (mat3.west|-bX) -- (mat3.east|-bX);}
          draw[thick] ([xshift=0.3em]mat3.north west) -| (mat3.south west) -- ++
          (0.3em,0)
          ([xshift=-0.3em]mat3.north east) -| (mat3.south east) -- ++ (-0.3em,0);
          end{tikzpicture}
          end{document}


          enter image description here






          share|improve this answer















          It is indeed a bit tedious. (EDIT: Fixed the first R to become math mode, mille grazie to @Sebastiano!)



          documentclass[tikz,border=3.14mm]{standalone}
          usetikzlibrary{positioning,backgrounds,patterns}
          begin{document}
          begin{tikzpicture}
          begin{scope}[local bounding box=mat1]
          path node (R0) {$R$} foreach X [remember=X as lastX (initially 0)] in
          {1,...,4}
          {ifnumX=3
          node[below right=1.5em of RlastX] (RX) {$phantom{R}$}
          else
          node[below right=1.5em of RlastX] (RX) {$R$}
          fi
          };
          begin{scope}[on background layer]
          draw[fill=green!70!black]
          foreach X in {0,1,2,4} {
          ([xshift=-1em]RX.north west) -- ([yshift=-1em]RX.south east)
          coordinate(bX)
          |- cycle};
          draw[densely dotted] ([xshift=-1em]R3.north west) -- ([yshift=-1em]R3.south east)
          coordinate(b3) |- cycle;
          end{scope}
          node[pattern=crosshatch,pattern color=purple,anchor=north west,
          minimum height=6em] (F) at ([yshift=-1em]R4.south east) {$F$};
          draw[densely dotted] ([yshift=-1em]R3.south east-|R4.south east)
          rectangle (F.east|-R3.north);
          foreach X [evaluate=X as Y using {int(40+10*X)}] in {0,1,2,4}
          {draw[fill=purple!Y] ([yshift=-1em]RX.south east-|R4.south east)
          rectangle (F.east|-RX.north);}
          end{scope}
          path (mat1.south west) -- (mat1.north east)
          node[pos=0.3,font=Large] {$0$} node[pos=0.7,font=Large] {$0$};
          draw[thick] ([xshift=0.7em]mat1.north west) -| (mat1.south west) -- ++ (0.7em,0)
          ([xshift=-0.7em]mat1.north east) -| (mat1.south east) -- ++ (-0.7em,0);
          %
          begin{scope}[local bounding box=mat2]
          foreach X [remember=X as lastX (initially 0)] in {1,2,3}
          {path ([xshift=1em]mat1.east|-RlastX.north) --
          ([xshift=2.5em]mat1.east|-blastX) node[midway] (aX) {$a_{X}$};}
          path ([xshift=1em]mat1.east|-R4.north) --
          ([xshift=2.5em]mat1.east|-b4) node[midway] (aM) {$a_{M}$};
          node[below=0.5em of aM] (b) {$b$};
          end{scope}
          draw[thick] ([xshift=0.5em]mat2.north west) -| (mat2.south west) -- ++
          (0.5em,0)
          ([xshift=-0.5em]mat2.north east) -| (mat2.south east) -- ++ (-0.5em,0);
          foreach X in {0,...,4}
          {draw (mat2.west|-bX) -- (mat2.east|-bX);}
          %
          node[anchor=west] (eq) at (mat2.east|-mat1.center) {$=$};
          %
          begin{scope}[local bounding box=mat3]
          node[pattern=dots,anchor=north west,pattern color=yellow!60!orange,
          minimum height=6em] (f) at ([xshift=0.1em]eq.east|-F.north) {$f$};
          foreach X [remember=X as lastX (initially 0),
          evaluate=X as Y using {int(30*X+10)}] in {1,2,3}
          {fill[yellow!Y] ([xshift=0.1em]eq.east|-RlastX.north) rectangle
          (f.east|-blastX); }
          fill[yellow] ([xshift=0.1em]eq.east|-R4.north) rectangle
          (f.east|-b4);
          draw[densely dotted] (f.center|-b2) -- (f.center|-b3);
          end{scope}
          foreach X in {0,...,4}
          {draw (mat3.west|-bX) -- (mat3.east|-bX);}
          draw[thick] ([xshift=0.3em]mat3.north west) -| (mat3.south west) -- ++
          (0.3em,0)
          ([xshift=-0.3em]mat3.north east) -| (mat3.south east) -- ++ (-0.3em,0);
          end{tikzpicture}
          end{document}


          enter image description here







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited 2 days ago

























          answered 2 days ago









          marmotmarmot

          110k5136255




          110k5136255








          • 1





            Spectacular! There is the first R on the top left that is not in math-mode. :-)

            – Sebastiano
            2 days ago











          • @Sebastiano Mille grazie!

            – marmot
            2 days ago






          • 1





            @JouleV Thanks! The second code shouldn't be there so I removed it. (I have one file for answers and accidentally copied the code for another answer, too.)

            – marmot
            2 days ago











          • I hope I've been of some help to you. This is what I so much regret about my mistakes, which are the result of naivety and which, by emphasizing my mistakes, the haters find fertile ground in my regard. Peraphs is better "grazie mille". Why? See this link youtube.com/watch?v=KvS_BVda9ww. :-)

            – Sebastiano
            2 days ago













          • Thank you very much, this has been useful. I learnt quite a few things.

            – Tarini Ramsewak
            yesterday














          • 1





            Spectacular! There is the first R on the top left that is not in math-mode. :-)

            – Sebastiano
            2 days ago











          • @Sebastiano Mille grazie!

            – marmot
            2 days ago






          • 1





            @JouleV Thanks! The second code shouldn't be there so I removed it. (I have one file for answers and accidentally copied the code for another answer, too.)

            – marmot
            2 days ago











          • I hope I've been of some help to you. This is what I so much regret about my mistakes, which are the result of naivety and which, by emphasizing my mistakes, the haters find fertile ground in my regard. Peraphs is better "grazie mille". Why? See this link youtube.com/watch?v=KvS_BVda9ww. :-)

            – Sebastiano
            2 days ago













          • Thank you very much, this has been useful. I learnt quite a few things.

            – Tarini Ramsewak
            yesterday








          1




          1





          Spectacular! There is the first R on the top left that is not in math-mode. :-)

          – Sebastiano
          2 days ago





          Spectacular! There is the first R on the top left that is not in math-mode. :-)

          – Sebastiano
          2 days ago













          @Sebastiano Mille grazie!

          – marmot
          2 days ago





          @Sebastiano Mille grazie!

          – marmot
          2 days ago




          1




          1





          @JouleV Thanks! The second code shouldn't be there so I removed it. (I have one file for answers and accidentally copied the code for another answer, too.)

          – marmot
          2 days ago





          @JouleV Thanks! The second code shouldn't be there so I removed it. (I have one file for answers and accidentally copied the code for another answer, too.)

          – marmot
          2 days ago













          I hope I've been of some help to you. This is what I so much regret about my mistakes, which are the result of naivety and which, by emphasizing my mistakes, the haters find fertile ground in my regard. Peraphs is better "grazie mille". Why? See this link youtube.com/watch?v=KvS_BVda9ww. :-)

          – Sebastiano
          2 days ago







          I hope I've been of some help to you. This is what I so much regret about my mistakes, which are the result of naivety and which, by emphasizing my mistakes, the haters find fertile ground in my regard. Peraphs is better "grazie mille". Why? See this link youtube.com/watch?v=KvS_BVda9ww. :-)

          – Sebastiano
          2 days ago















          Thank you very much, this has been useful. I learnt quite a few things.

          – Tarini Ramsewak
          yesterday





          Thank you very much, this has been useful. I learnt quite a few things.

          – Tarini Ramsewak
          yesterday










          Tarini Ramsewak is a new contributor. Be nice, and check out our Code of Conduct.










          draft saved

          draft discarded


















          Tarini Ramsewak is a new contributor. Be nice, and check out our Code of Conduct.













          Tarini Ramsewak is a new contributor. Be nice, and check out our Code of Conduct.












          Tarini Ramsewak is a new contributor. Be nice, and check out our Code of Conduct.
















          Thanks for contributing an answer to TeX - LaTeX Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f479895%2fmatrix-using-tikz-package%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          "Incorrect syntax near the keyword 'ON'. (on update cascade, on delete cascade,)

          Alcedinidae

          Origin of the phrase “under your belt”?