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 yesterday







      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 yesterday









      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
            yesterday






          • 1





            @Sebastiano Thank you!

            – CarLaTeX
            yesterday











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

            – Tarini Ramsewak
            14 hours ago













          • Thank you so much!

            – Tarini Ramsewak
            14 hours ago











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

            – CarLaTeX
            14 hours ago



















          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
            yesterday











          • @Sebastiano Mille grazie!

            – marmot
            yesterday






          • 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
            yesterday











          • 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
            yesterday













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

            – Tarini Ramsewak
            15 hours ago











          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
            yesterday






          • 1





            @Sebastiano Thank you!

            – CarLaTeX
            yesterday











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

            – Tarini Ramsewak
            14 hours ago













          • Thank you so much!

            – Tarini Ramsewak
            14 hours ago











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

            – CarLaTeX
            14 hours ago
















          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
            yesterday






          • 1





            @Sebastiano Thank you!

            – CarLaTeX
            yesterday











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

            – Tarini Ramsewak
            14 hours ago













          • Thank you so much!

            – Tarini Ramsewak
            14 hours ago











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

            – CarLaTeX
            14 hours ago














          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 yesterday









          CarLaTeXCarLaTeX

          33.7k551138




          33.7k551138













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

            – Sebastiano
            yesterday






          • 1





            @Sebastiano Thank you!

            – CarLaTeX
            yesterday











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

            – Tarini Ramsewak
            14 hours ago













          • Thank you so much!

            – Tarini Ramsewak
            14 hours ago











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

            – CarLaTeX
            14 hours ago



















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

            – Sebastiano
            yesterday






          • 1





            @Sebastiano Thank you!

            – CarLaTeX
            yesterday











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

            – Tarini Ramsewak
            14 hours ago













          • Thank you so much!

            – Tarini Ramsewak
            14 hours ago











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

            – CarLaTeX
            14 hours ago

















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

          – Sebastiano
          yesterday





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

          – Sebastiano
          yesterday




          1




          1





          @Sebastiano Thank you!

          – CarLaTeX
          yesterday





          @Sebastiano Thank you!

          – CarLaTeX
          yesterday













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

          – Tarini Ramsewak
          14 hours ago







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

          – Tarini Ramsewak
          14 hours ago















          Thank you so much!

          – Tarini Ramsewak
          14 hours ago





          Thank you so much!

          – Tarini Ramsewak
          14 hours ago













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

          – CarLaTeX
          14 hours ago





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

          – CarLaTeX
          14 hours ago











          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
            yesterday











          • @Sebastiano Mille grazie!

            – marmot
            yesterday






          • 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
            yesterday











          • 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
            yesterday













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

            – Tarini Ramsewak
            15 hours ago
















          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
            yesterday











          • @Sebastiano Mille grazie!

            – marmot
            yesterday






          • 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
            yesterday











          • 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
            yesterday













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

            – Tarini Ramsewak
            15 hours ago














          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 yesterday

























          answered yesterday









          marmotmarmot

          110k5136255




          110k5136255








          • 1





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

            – Sebastiano
            yesterday











          • @Sebastiano Mille grazie!

            – marmot
            yesterday






          • 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
            yesterday











          • 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
            yesterday













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

            – Tarini Ramsewak
            15 hours ago














          • 1





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

            – Sebastiano
            yesterday











          • @Sebastiano Mille grazie!

            – marmot
            yesterday






          • 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
            yesterday











          • 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
            yesterday













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

            – Tarini Ramsewak
            15 hours ago








          1




          1





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

          – Sebastiano
          yesterday





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

          – Sebastiano
          yesterday













          @Sebastiano Mille grazie!

          – marmot
          yesterday





          @Sebastiano Mille grazie!

          – marmot
          yesterday




          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
          yesterday





          @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
          yesterday













          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
          yesterday







          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
          yesterday















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

          – Tarini Ramsewak
          15 hours ago





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

          – Tarini Ramsewak
          15 hours ago










          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

          Plaza Victoria

          Puebla de Zaragoza

          Musa