How do I draw the following matrix in LaTeX?











up vote
2
down vote

favorite
1












I want to draw the following matrix in LaTeX:



Enter image description here



I found that I should use the TikZ package, and I have spent a lot of time looking at the package. However, I have no experience of using the package before, and I do not know how to draw it. How can I do it?










share|improve this question




























    up vote
    2
    down vote

    favorite
    1












    I want to draw the following matrix in LaTeX:



    Enter image description here



    I found that I should use the TikZ package, and I have spent a lot of time looking at the package. However, I have no experience of using the package before, and I do not know how to draw it. How can I do it?










    share|improve this question


























      up vote
      2
      down vote

      favorite
      1









      up vote
      2
      down vote

      favorite
      1






      1





      I want to draw the following matrix in LaTeX:



      Enter image description here



      I found that I should use the TikZ package, and I have spent a lot of time looking at the package. However, I have no experience of using the package before, and I do not know how to draw it. How can I do it?










      share|improve this question















      I want to draw the following matrix in LaTeX:



      Enter image description here



      I found that I should use the TikZ package, and I have spent a lot of time looking at the package. However, I have no experience of using the package before, and I do not know how to draw it. How can I do it?







      tikz-matrix






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 19 at 6:07









      Peter Mortensen

      53136




      53136










      asked Nov 18 at 21:42









      Sherry

      1225




      1225






















          2 Answers
          2






          active

          oldest

          votes

















          up vote
          16
          down vote



          accepted










          Just arrays:



          documentclass{article}
          usepackage{amsmath,array}

          begin{document}

          [
          newcommand{blocke}{
          begin{matrix}
          hphantom{0} & hphantom{0} & hphantom{0} & hphantom{0} \
          \ \
          end{matrix}
          }
          newcommand{blockr}{
          begin{matrix}
          hphantom{0} & hphantom{0} & hphantom{0} &
          hat{N}smash[b]{vphantom{Big|}} \ &&& vdots \ &&& 2 \ &&& 1
          end{matrix}
          }
          newcommand{blockl}{
          begin{matrix}
          1 & hphantom{0} & hphantom{0} & hphantom{0} \
          2 \ vdots \ hat{N}smash[b]{vphantom{Big|}}
          end{matrix}
          }
          newcommand{dddots}{
          begin{matrix}
          hphantom{0} & hphantom{0} & ddots \
          \
          \
          ddots
          end{matrix}
          }
          begin{pmatrix}
          hspace*{0.3em}
          begin{array}{|*{5}{@{,}c@{!}|}}
          hline
          & blockl & & & blocke \
          hline
          blockr & & blockl & & \
          hline
          & blockr & & blockl & \
          hline
          & & & dddots & \
          hline
          & & & blockr & \
          hline
          end{array}
          hspace*{0.3em}
          end{pmatrix}
          ]

          end{document}


          I locally defined a few commands to ease input.



          enter image description here






          share|improve this answer





















          • Is it possible to make the parentheses curver/more curve?
            – Ooker
            Nov 19 at 1:51




















          up vote
          9
          down vote













          Welcome to TeX.SE! Actually, you do not need TikZ for this.



          documentclass{article}
          usepackage{amsmath}
          begin{document}
          [left(begin{array}{|*{5}{ccccc|}}
          hline
          & & & & & 1 & & & & & & & & & & & & & & & & & & & \
          & & & & & 2 & & & & & & & & & & & & & & & & & & & \
          & & & & & vdots & & & & & & & & & & & & & & & & & & & \
          & & & & & vdots & & & & & & & & & & & & & & & & & & & \
          & & & & & widehat{N} & & & & & & & & & & & & & & & & & & & \
          hline
          & & & & widehat{N} & & & & & & 1 & & & & & & & & & & & & & & \
          & & & & vdots & & & & & & 2 & & & & & & & & & & & & & & \
          & & & & vdots & & & & & & vdots & & & & & & & & & & & & & & \
          & & & & 2 & & & & & & vdots & & & & & & & & & & & & & & \
          & & & & 1 & & & & & & widehat{N} & & & & & & & & & & & & & & \
          hline
          & & & & & & & & & widehat{N} & & & & & & 1 & & & & & & & & & \
          & & & & & & & & & vdots & & & & & & 2 & & & & & & & & & \
          & & & & & & & & & vdots & & & & & & vdots & & & & & & & & & \
          & & & & & & & & & 2 & & & & & & vdots & & & & & & & & & \
          & & & & & & & & & 1 & & & & & & widehat{N} & & & & & & & & & \
          hline
          & & & & & & & & & & & & & & & & & bullet & & & & & & & \
          & & & & & & & & & & & & & & & & & & bullet & & & & & & \
          & & & & & & & & & & & & & & & bullet & & & & bullet & & & & & \
          & & & & & & & & & & & & & & & & bullet & & & & & & & & \
          & & & & & & & & & & & & & & & & & bullet & & & & & & & \
          hline
          & & & & & & & & & & & & & & & & & & & widehat{N} & & & & & \
          & & & & & & & & & & & & & & & & & & & vdots & & & & & \
          & & & & & & & & & & & & & & & & & & & vdots & & & & & \
          & & & & & & & & & & & & & & & & & & & 2 & & & & & \
          & & & & & & & & & & & & & & & & & & & 1 & & & & & \
          hline
          end{array}right)]
          end{document}


          enter image description here



          However, you could use TikZ to improve the appearance.



          documentclass{article}
          usepackage{amsmath}
          usepackage{tikz}
          usetikzlibrary{tikzmark}
          tikzset{% https://tex.stackexchange.com/a/156990/121799
          dots/.style args={#1per #2}{%
          line cap=round,
          dash pattern=on 0 off #2/#1
          }
          }
          begin{document}
          [left(begin{array}{|*{5}{ccccc|}}
          hline
          & & & & & 1 & & & & & & & & & & & & & & & & & & & \
          & & & & & tikzmarknode{21}{2} & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & tikzmarknode{N1}{widehat{N}} & & & & & & & & & & & & & & & & & & & \
          hline
          & & & & tikzmarknode{N2}{widehat{N}} & & & & & & 1 & & & & & & & & & & & & & & \
          & & & & & & & & & & tikzmarknode{23}{2} & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & tikzmarknode{22}{2} & & & & & & & & & & & & & & & & & & & & \
          & & & & 1 & & & & & & tikzmarknode{N3}{widehat{N}} & & & & & & & & & & & & & & \
          hline
          & & & & & & & & & tikzmarknode{N4}{widehat{N}} & & & & & & 1 & & & & & & & & & \
          & & & & & & & & & & & & & & & tikzmarknode{25}{2} & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & tikzmarknode{24}{2} & & & & & & & & & & & & & & & \
          & & & & & & & & & 1 & & & & & & tikzmarknode{N5}{widehat{N}} & & & & & & & & & \
          hline
          & & & & & & & & & & & & & & & & & bullet & & & & & & & \
          & & & & & & & & & & & & & & & & & & bullet & & & & & & \
          & & & & & & & & & & & & & & & bullet & & & & bullet & & & & & \
          & & & & & & & & & & & & & & & & bullet & & & & & & & & \
          & & & & & & & & & & & & & & & & & bullet & & & & & & & \
          hline
          & & & & & & & & & & & & & & & & & & & tikzmarknode{N6}{widehat{N}} & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & tikzmarknode{26}{2} & & & & & \
          & & & & & & & & & & & & & & & & & & & 1 & & & & & \
          hline
          end{array}right)]
          begin{tikzpicture}[overlay,remember picture]
          foreach X in {1,...,6}
          {draw[very thick, dots=8 per 1cm,shorten >=3pt,shorten <=3pt] (2X) -- (NX);}
          end{tikzpicture}
          end{document}


          enter image description here



          ADDENDUM: In an attempt to make Ryan Reich a bit happy, here is a version in which you only have to specify the nonempty entries of this sparse array. These entries are determined by the list {6/1/1,6/2/2,6/5/widehat{N},... }, where each entry has the structure <X>/<Y>/<entry> with X and Y specifying the position. Notice that one could shorten this further if you really have only one type of columns, but the point here is to allow to build arbitrary sparse matrices of that type. This code uses this answer.



          documentclass{article}
          usepackage{tikz}
          usetikzlibrary{matrix,calc}
          usepackage{etoolbox}
          tikzset{% https://tex.stackexchange.com/a/156990/121799
          dots/.style args={#1per #2}{%
          line cap=round,
          dash pattern=on 0 off #2/#1
          }
          }
          begin{document}
          edefmylist{6/1/1,6/2/2,6/5/widehat{N},%
          5/6/widehat{N},5/9/2,5/10/1,%
          11/6/1,11/7/2,11/10/widehat{N},%
          10/11/widehat{N},10/12/2,10/15/1,%
          16/11/1,16/12/2,16/15/widehat{N},%
          20/21/widehat{N},20/22/2,20/25/1%
          }
          begin{tikzpicture}
          letmymatrixcontentempty
          foreach Y in {1,...,25}{%
          foreach X in {1,...,25}
          {xdeftmp{{}}
          foreach XX/YY/ZZ in mylist
          {ifnumXX=X
          ifnumYY=Y
          xdeftmp{ZZ}
          fi
          fi}
          ifnumX=25
          expandaftergapptoexpandaftermymatrixcontentexpandafter{tmpspace\}%
          else
          expandaftergapptoexpandaftermymatrixcontentexpandafter{tmpspace&space}%
          fi
          }
          }
          matrix [matrix of math nodes,ampersand replacement=&,left delimiter=(,
          right delimiter=),draw,row sep=3pt] (mat) {
          mymatrixcontent
          };
          foreach X [evaluate=X as Y using {int(X+1)}]in {5,10,...,20}
          {coordinate (aux1) at ($(mat-1-Y.west)!0.5!(mat-1-X.east)$);
          coordinate (aux2) at (mat-X-1.south);
          draw (mat.north -| aux1) -- (mat.south -| aux1)
          (mat.west |- aux2) -- (mat.east |- aux2);}
          foreach X/Y [evaluate=Y as Z using {int(Y+3)}] in
          {6/2,5/6,11/7,10/12,16/12,20/22}
          {draw[very thick, dots=8 per 1cm,shorten >=3pt,shorten <=3pt]
          (mat-Y-X) -- (mat-Z-X);}
          draw[line width=1.2mm, dots=4 per 1cm]
          (mat-16-18.center) -- (mat-18-20.center)
          (mat-18-16.center) -- (mat-20-18.center);
          end{tikzpicture}
          end{document}


          enter image description here






          share|improve this answer























          • I don't want to be a jerk, but filling a page with ampersands that require careful counting is not a very helpful answer.
            – Ryan Reich
            Nov 19 at 1:06










          • @RyanReich Are you really typing them one by one? If so, then I agree. But of course if you just do copy and paste, then it is not that cumbersome. Well, and if you like phantoms better (and make sure that none of the entries exceeds the size of those), I'd say this is a matter of taste, but otherwise it is a bit nontrivial to bet things aligned across different blocks. So that is just to say that I definitely did not have to count here.
            – marmot
            Nov 19 at 2:16






          • 1




            What if I make a mistake? What if I need to make a change? There may technically be a programmatic avenue into this gigantic expression but it's fragile and not apparent on the finished product. It doesn't say what it does, it just is.
            – Ryan Reich
            Nov 19 at 3:48










          • @RyanReich If you make a mistake, you will not get what you want. However, this is not specific to this matrix. You seem not to like this answer, which is fine. However, I do not really see the purpose of your comments. I believe to have told you why I did what I did. If you have a better solution post it. (And yes, I do now how to typeset a matrix programmatically. Do you want me to post such a solution? The OP has already made her choice...) And yes, the matrix is gigantic.
            – marmot
            Nov 19 at 3:57










          • @RyanReich In an attempt to remove the tension in our exchange of opinions, I added a version in which you only need to specify the nontrivial entries.
            – marmot
            Nov 19 at 5:11











          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',
          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
          });


          }
          });














           

          draft saved


          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f460659%2fhow-do-i-draw-the-following-matrix-in-latex%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








          up vote
          16
          down vote



          accepted










          Just arrays:



          documentclass{article}
          usepackage{amsmath,array}

          begin{document}

          [
          newcommand{blocke}{
          begin{matrix}
          hphantom{0} & hphantom{0} & hphantom{0} & hphantom{0} \
          \ \
          end{matrix}
          }
          newcommand{blockr}{
          begin{matrix}
          hphantom{0} & hphantom{0} & hphantom{0} &
          hat{N}smash[b]{vphantom{Big|}} \ &&& vdots \ &&& 2 \ &&& 1
          end{matrix}
          }
          newcommand{blockl}{
          begin{matrix}
          1 & hphantom{0} & hphantom{0} & hphantom{0} \
          2 \ vdots \ hat{N}smash[b]{vphantom{Big|}}
          end{matrix}
          }
          newcommand{dddots}{
          begin{matrix}
          hphantom{0} & hphantom{0} & ddots \
          \
          \
          ddots
          end{matrix}
          }
          begin{pmatrix}
          hspace*{0.3em}
          begin{array}{|*{5}{@{,}c@{!}|}}
          hline
          & blockl & & & blocke \
          hline
          blockr & & blockl & & \
          hline
          & blockr & & blockl & \
          hline
          & & & dddots & \
          hline
          & & & blockr & \
          hline
          end{array}
          hspace*{0.3em}
          end{pmatrix}
          ]

          end{document}


          I locally defined a few commands to ease input.



          enter image description here






          share|improve this answer





















          • Is it possible to make the parentheses curver/more curve?
            – Ooker
            Nov 19 at 1:51

















          up vote
          16
          down vote



          accepted










          Just arrays:



          documentclass{article}
          usepackage{amsmath,array}

          begin{document}

          [
          newcommand{blocke}{
          begin{matrix}
          hphantom{0} & hphantom{0} & hphantom{0} & hphantom{0} \
          \ \
          end{matrix}
          }
          newcommand{blockr}{
          begin{matrix}
          hphantom{0} & hphantom{0} & hphantom{0} &
          hat{N}smash[b]{vphantom{Big|}} \ &&& vdots \ &&& 2 \ &&& 1
          end{matrix}
          }
          newcommand{blockl}{
          begin{matrix}
          1 & hphantom{0} & hphantom{0} & hphantom{0} \
          2 \ vdots \ hat{N}smash[b]{vphantom{Big|}}
          end{matrix}
          }
          newcommand{dddots}{
          begin{matrix}
          hphantom{0} & hphantom{0} & ddots \
          \
          \
          ddots
          end{matrix}
          }
          begin{pmatrix}
          hspace*{0.3em}
          begin{array}{|*{5}{@{,}c@{!}|}}
          hline
          & blockl & & & blocke \
          hline
          blockr & & blockl & & \
          hline
          & blockr & & blockl & \
          hline
          & & & dddots & \
          hline
          & & & blockr & \
          hline
          end{array}
          hspace*{0.3em}
          end{pmatrix}
          ]

          end{document}


          I locally defined a few commands to ease input.



          enter image description here






          share|improve this answer





















          • Is it possible to make the parentheses curver/more curve?
            – Ooker
            Nov 19 at 1:51















          up vote
          16
          down vote



          accepted







          up vote
          16
          down vote



          accepted






          Just arrays:



          documentclass{article}
          usepackage{amsmath,array}

          begin{document}

          [
          newcommand{blocke}{
          begin{matrix}
          hphantom{0} & hphantom{0} & hphantom{0} & hphantom{0} \
          \ \
          end{matrix}
          }
          newcommand{blockr}{
          begin{matrix}
          hphantom{0} & hphantom{0} & hphantom{0} &
          hat{N}smash[b]{vphantom{Big|}} \ &&& vdots \ &&& 2 \ &&& 1
          end{matrix}
          }
          newcommand{blockl}{
          begin{matrix}
          1 & hphantom{0} & hphantom{0} & hphantom{0} \
          2 \ vdots \ hat{N}smash[b]{vphantom{Big|}}
          end{matrix}
          }
          newcommand{dddots}{
          begin{matrix}
          hphantom{0} & hphantom{0} & ddots \
          \
          \
          ddots
          end{matrix}
          }
          begin{pmatrix}
          hspace*{0.3em}
          begin{array}{|*{5}{@{,}c@{!}|}}
          hline
          & blockl & & & blocke \
          hline
          blockr & & blockl & & \
          hline
          & blockr & & blockl & \
          hline
          & & & dddots & \
          hline
          & & & blockr & \
          hline
          end{array}
          hspace*{0.3em}
          end{pmatrix}
          ]

          end{document}


          I locally defined a few commands to ease input.



          enter image description here






          share|improve this answer












          Just arrays:



          documentclass{article}
          usepackage{amsmath,array}

          begin{document}

          [
          newcommand{blocke}{
          begin{matrix}
          hphantom{0} & hphantom{0} & hphantom{0} & hphantom{0} \
          \ \
          end{matrix}
          }
          newcommand{blockr}{
          begin{matrix}
          hphantom{0} & hphantom{0} & hphantom{0} &
          hat{N}smash[b]{vphantom{Big|}} \ &&& vdots \ &&& 2 \ &&& 1
          end{matrix}
          }
          newcommand{blockl}{
          begin{matrix}
          1 & hphantom{0} & hphantom{0} & hphantom{0} \
          2 \ vdots \ hat{N}smash[b]{vphantom{Big|}}
          end{matrix}
          }
          newcommand{dddots}{
          begin{matrix}
          hphantom{0} & hphantom{0} & ddots \
          \
          \
          ddots
          end{matrix}
          }
          begin{pmatrix}
          hspace*{0.3em}
          begin{array}{|*{5}{@{,}c@{!}|}}
          hline
          & blockl & & & blocke \
          hline
          blockr & & blockl & & \
          hline
          & blockr & & blockl & \
          hline
          & & & dddots & \
          hline
          & & & blockr & \
          hline
          end{array}
          hspace*{0.3em}
          end{pmatrix}
          ]

          end{document}


          I locally defined a few commands to ease input.



          enter image description here







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 18 at 22:12









          egreg

          700k8518623136




          700k8518623136












          • Is it possible to make the parentheses curver/more curve?
            – Ooker
            Nov 19 at 1:51




















          • Is it possible to make the parentheses curver/more curve?
            – Ooker
            Nov 19 at 1:51


















          Is it possible to make the parentheses curver/more curve?
          – Ooker
          Nov 19 at 1:51






          Is it possible to make the parentheses curver/more curve?
          – Ooker
          Nov 19 at 1:51












          up vote
          9
          down vote













          Welcome to TeX.SE! Actually, you do not need TikZ for this.



          documentclass{article}
          usepackage{amsmath}
          begin{document}
          [left(begin{array}{|*{5}{ccccc|}}
          hline
          & & & & & 1 & & & & & & & & & & & & & & & & & & & \
          & & & & & 2 & & & & & & & & & & & & & & & & & & & \
          & & & & & vdots & & & & & & & & & & & & & & & & & & & \
          & & & & & vdots & & & & & & & & & & & & & & & & & & & \
          & & & & & widehat{N} & & & & & & & & & & & & & & & & & & & \
          hline
          & & & & widehat{N} & & & & & & 1 & & & & & & & & & & & & & & \
          & & & & vdots & & & & & & 2 & & & & & & & & & & & & & & \
          & & & & vdots & & & & & & vdots & & & & & & & & & & & & & & \
          & & & & 2 & & & & & & vdots & & & & & & & & & & & & & & \
          & & & & 1 & & & & & & widehat{N} & & & & & & & & & & & & & & \
          hline
          & & & & & & & & & widehat{N} & & & & & & 1 & & & & & & & & & \
          & & & & & & & & & vdots & & & & & & 2 & & & & & & & & & \
          & & & & & & & & & vdots & & & & & & vdots & & & & & & & & & \
          & & & & & & & & & 2 & & & & & & vdots & & & & & & & & & \
          & & & & & & & & & 1 & & & & & & widehat{N} & & & & & & & & & \
          hline
          & & & & & & & & & & & & & & & & & bullet & & & & & & & \
          & & & & & & & & & & & & & & & & & & bullet & & & & & & \
          & & & & & & & & & & & & & & & bullet & & & & bullet & & & & & \
          & & & & & & & & & & & & & & & & bullet & & & & & & & & \
          & & & & & & & & & & & & & & & & & bullet & & & & & & & \
          hline
          & & & & & & & & & & & & & & & & & & & widehat{N} & & & & & \
          & & & & & & & & & & & & & & & & & & & vdots & & & & & \
          & & & & & & & & & & & & & & & & & & & vdots & & & & & \
          & & & & & & & & & & & & & & & & & & & 2 & & & & & \
          & & & & & & & & & & & & & & & & & & & 1 & & & & & \
          hline
          end{array}right)]
          end{document}


          enter image description here



          However, you could use TikZ to improve the appearance.



          documentclass{article}
          usepackage{amsmath}
          usepackage{tikz}
          usetikzlibrary{tikzmark}
          tikzset{% https://tex.stackexchange.com/a/156990/121799
          dots/.style args={#1per #2}{%
          line cap=round,
          dash pattern=on 0 off #2/#1
          }
          }
          begin{document}
          [left(begin{array}{|*{5}{ccccc|}}
          hline
          & & & & & 1 & & & & & & & & & & & & & & & & & & & \
          & & & & & tikzmarknode{21}{2} & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & tikzmarknode{N1}{widehat{N}} & & & & & & & & & & & & & & & & & & & \
          hline
          & & & & tikzmarknode{N2}{widehat{N}} & & & & & & 1 & & & & & & & & & & & & & & \
          & & & & & & & & & & tikzmarknode{23}{2} & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & tikzmarknode{22}{2} & & & & & & & & & & & & & & & & & & & & \
          & & & & 1 & & & & & & tikzmarknode{N3}{widehat{N}} & & & & & & & & & & & & & & \
          hline
          & & & & & & & & & tikzmarknode{N4}{widehat{N}} & & & & & & 1 & & & & & & & & & \
          & & & & & & & & & & & & & & & tikzmarknode{25}{2} & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & tikzmarknode{24}{2} & & & & & & & & & & & & & & & \
          & & & & & & & & & 1 & & & & & & tikzmarknode{N5}{widehat{N}} & & & & & & & & & \
          hline
          & & & & & & & & & & & & & & & & & bullet & & & & & & & \
          & & & & & & & & & & & & & & & & & & bullet & & & & & & \
          & & & & & & & & & & & & & & & bullet & & & & bullet & & & & & \
          & & & & & & & & & & & & & & & & bullet & & & & & & & & \
          & & & & & & & & & & & & & & & & & bullet & & & & & & & \
          hline
          & & & & & & & & & & & & & & & & & & & tikzmarknode{N6}{widehat{N}} & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & tikzmarknode{26}{2} & & & & & \
          & & & & & & & & & & & & & & & & & & & 1 & & & & & \
          hline
          end{array}right)]
          begin{tikzpicture}[overlay,remember picture]
          foreach X in {1,...,6}
          {draw[very thick, dots=8 per 1cm,shorten >=3pt,shorten <=3pt] (2X) -- (NX);}
          end{tikzpicture}
          end{document}


          enter image description here



          ADDENDUM: In an attempt to make Ryan Reich a bit happy, here is a version in which you only have to specify the nonempty entries of this sparse array. These entries are determined by the list {6/1/1,6/2/2,6/5/widehat{N},... }, where each entry has the structure <X>/<Y>/<entry> with X and Y specifying the position. Notice that one could shorten this further if you really have only one type of columns, but the point here is to allow to build arbitrary sparse matrices of that type. This code uses this answer.



          documentclass{article}
          usepackage{tikz}
          usetikzlibrary{matrix,calc}
          usepackage{etoolbox}
          tikzset{% https://tex.stackexchange.com/a/156990/121799
          dots/.style args={#1per #2}{%
          line cap=round,
          dash pattern=on 0 off #2/#1
          }
          }
          begin{document}
          edefmylist{6/1/1,6/2/2,6/5/widehat{N},%
          5/6/widehat{N},5/9/2,5/10/1,%
          11/6/1,11/7/2,11/10/widehat{N},%
          10/11/widehat{N},10/12/2,10/15/1,%
          16/11/1,16/12/2,16/15/widehat{N},%
          20/21/widehat{N},20/22/2,20/25/1%
          }
          begin{tikzpicture}
          letmymatrixcontentempty
          foreach Y in {1,...,25}{%
          foreach X in {1,...,25}
          {xdeftmp{{}}
          foreach XX/YY/ZZ in mylist
          {ifnumXX=X
          ifnumYY=Y
          xdeftmp{ZZ}
          fi
          fi}
          ifnumX=25
          expandaftergapptoexpandaftermymatrixcontentexpandafter{tmpspace\}%
          else
          expandaftergapptoexpandaftermymatrixcontentexpandafter{tmpspace&space}%
          fi
          }
          }
          matrix [matrix of math nodes,ampersand replacement=&,left delimiter=(,
          right delimiter=),draw,row sep=3pt] (mat) {
          mymatrixcontent
          };
          foreach X [evaluate=X as Y using {int(X+1)}]in {5,10,...,20}
          {coordinate (aux1) at ($(mat-1-Y.west)!0.5!(mat-1-X.east)$);
          coordinate (aux2) at (mat-X-1.south);
          draw (mat.north -| aux1) -- (mat.south -| aux1)
          (mat.west |- aux2) -- (mat.east |- aux2);}
          foreach X/Y [evaluate=Y as Z using {int(Y+3)}] in
          {6/2,5/6,11/7,10/12,16/12,20/22}
          {draw[very thick, dots=8 per 1cm,shorten >=3pt,shorten <=3pt]
          (mat-Y-X) -- (mat-Z-X);}
          draw[line width=1.2mm, dots=4 per 1cm]
          (mat-16-18.center) -- (mat-18-20.center)
          (mat-18-16.center) -- (mat-20-18.center);
          end{tikzpicture}
          end{document}


          enter image description here






          share|improve this answer























          • I don't want to be a jerk, but filling a page with ampersands that require careful counting is not a very helpful answer.
            – Ryan Reich
            Nov 19 at 1:06










          • @RyanReich Are you really typing them one by one? If so, then I agree. But of course if you just do copy and paste, then it is not that cumbersome. Well, and if you like phantoms better (and make sure that none of the entries exceeds the size of those), I'd say this is a matter of taste, but otherwise it is a bit nontrivial to bet things aligned across different blocks. So that is just to say that I definitely did not have to count here.
            – marmot
            Nov 19 at 2:16






          • 1




            What if I make a mistake? What if I need to make a change? There may technically be a programmatic avenue into this gigantic expression but it's fragile and not apparent on the finished product. It doesn't say what it does, it just is.
            – Ryan Reich
            Nov 19 at 3:48










          • @RyanReich If you make a mistake, you will not get what you want. However, this is not specific to this matrix. You seem not to like this answer, which is fine. However, I do not really see the purpose of your comments. I believe to have told you why I did what I did. If you have a better solution post it. (And yes, I do now how to typeset a matrix programmatically. Do you want me to post such a solution? The OP has already made her choice...) And yes, the matrix is gigantic.
            – marmot
            Nov 19 at 3:57










          • @RyanReich In an attempt to remove the tension in our exchange of opinions, I added a version in which you only need to specify the nontrivial entries.
            – marmot
            Nov 19 at 5:11















          up vote
          9
          down vote













          Welcome to TeX.SE! Actually, you do not need TikZ for this.



          documentclass{article}
          usepackage{amsmath}
          begin{document}
          [left(begin{array}{|*{5}{ccccc|}}
          hline
          & & & & & 1 & & & & & & & & & & & & & & & & & & & \
          & & & & & 2 & & & & & & & & & & & & & & & & & & & \
          & & & & & vdots & & & & & & & & & & & & & & & & & & & \
          & & & & & vdots & & & & & & & & & & & & & & & & & & & \
          & & & & & widehat{N} & & & & & & & & & & & & & & & & & & & \
          hline
          & & & & widehat{N} & & & & & & 1 & & & & & & & & & & & & & & \
          & & & & vdots & & & & & & 2 & & & & & & & & & & & & & & \
          & & & & vdots & & & & & & vdots & & & & & & & & & & & & & & \
          & & & & 2 & & & & & & vdots & & & & & & & & & & & & & & \
          & & & & 1 & & & & & & widehat{N} & & & & & & & & & & & & & & \
          hline
          & & & & & & & & & widehat{N} & & & & & & 1 & & & & & & & & & \
          & & & & & & & & & vdots & & & & & & 2 & & & & & & & & & \
          & & & & & & & & & vdots & & & & & & vdots & & & & & & & & & \
          & & & & & & & & & 2 & & & & & & vdots & & & & & & & & & \
          & & & & & & & & & 1 & & & & & & widehat{N} & & & & & & & & & \
          hline
          & & & & & & & & & & & & & & & & & bullet & & & & & & & \
          & & & & & & & & & & & & & & & & & & bullet & & & & & & \
          & & & & & & & & & & & & & & & bullet & & & & bullet & & & & & \
          & & & & & & & & & & & & & & & & bullet & & & & & & & & \
          & & & & & & & & & & & & & & & & & bullet & & & & & & & \
          hline
          & & & & & & & & & & & & & & & & & & & widehat{N} & & & & & \
          & & & & & & & & & & & & & & & & & & & vdots & & & & & \
          & & & & & & & & & & & & & & & & & & & vdots & & & & & \
          & & & & & & & & & & & & & & & & & & & 2 & & & & & \
          & & & & & & & & & & & & & & & & & & & 1 & & & & & \
          hline
          end{array}right)]
          end{document}


          enter image description here



          However, you could use TikZ to improve the appearance.



          documentclass{article}
          usepackage{amsmath}
          usepackage{tikz}
          usetikzlibrary{tikzmark}
          tikzset{% https://tex.stackexchange.com/a/156990/121799
          dots/.style args={#1per #2}{%
          line cap=round,
          dash pattern=on 0 off #2/#1
          }
          }
          begin{document}
          [left(begin{array}{|*{5}{ccccc|}}
          hline
          & & & & & 1 & & & & & & & & & & & & & & & & & & & \
          & & & & & tikzmarknode{21}{2} & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & tikzmarknode{N1}{widehat{N}} & & & & & & & & & & & & & & & & & & & \
          hline
          & & & & tikzmarknode{N2}{widehat{N}} & & & & & & 1 & & & & & & & & & & & & & & \
          & & & & & & & & & & tikzmarknode{23}{2} & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & tikzmarknode{22}{2} & & & & & & & & & & & & & & & & & & & & \
          & & & & 1 & & & & & & tikzmarknode{N3}{widehat{N}} & & & & & & & & & & & & & & \
          hline
          & & & & & & & & & tikzmarknode{N4}{widehat{N}} & & & & & & 1 & & & & & & & & & \
          & & & & & & & & & & & & & & & tikzmarknode{25}{2} & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & tikzmarknode{24}{2} & & & & & & & & & & & & & & & \
          & & & & & & & & & 1 & & & & & & tikzmarknode{N5}{widehat{N}} & & & & & & & & & \
          hline
          & & & & & & & & & & & & & & & & & bullet & & & & & & & \
          & & & & & & & & & & & & & & & & & & bullet & & & & & & \
          & & & & & & & & & & & & & & & bullet & & & & bullet & & & & & \
          & & & & & & & & & & & & & & & & bullet & & & & & & & & \
          & & & & & & & & & & & & & & & & & bullet & & & & & & & \
          hline
          & & & & & & & & & & & & & & & & & & & tikzmarknode{N6}{widehat{N}} & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & tikzmarknode{26}{2} & & & & & \
          & & & & & & & & & & & & & & & & & & & 1 & & & & & \
          hline
          end{array}right)]
          begin{tikzpicture}[overlay,remember picture]
          foreach X in {1,...,6}
          {draw[very thick, dots=8 per 1cm,shorten >=3pt,shorten <=3pt] (2X) -- (NX);}
          end{tikzpicture}
          end{document}


          enter image description here



          ADDENDUM: In an attempt to make Ryan Reich a bit happy, here is a version in which you only have to specify the nonempty entries of this sparse array. These entries are determined by the list {6/1/1,6/2/2,6/5/widehat{N},... }, where each entry has the structure <X>/<Y>/<entry> with X and Y specifying the position. Notice that one could shorten this further if you really have only one type of columns, but the point here is to allow to build arbitrary sparse matrices of that type. This code uses this answer.



          documentclass{article}
          usepackage{tikz}
          usetikzlibrary{matrix,calc}
          usepackage{etoolbox}
          tikzset{% https://tex.stackexchange.com/a/156990/121799
          dots/.style args={#1per #2}{%
          line cap=round,
          dash pattern=on 0 off #2/#1
          }
          }
          begin{document}
          edefmylist{6/1/1,6/2/2,6/5/widehat{N},%
          5/6/widehat{N},5/9/2,5/10/1,%
          11/6/1,11/7/2,11/10/widehat{N},%
          10/11/widehat{N},10/12/2,10/15/1,%
          16/11/1,16/12/2,16/15/widehat{N},%
          20/21/widehat{N},20/22/2,20/25/1%
          }
          begin{tikzpicture}
          letmymatrixcontentempty
          foreach Y in {1,...,25}{%
          foreach X in {1,...,25}
          {xdeftmp{{}}
          foreach XX/YY/ZZ in mylist
          {ifnumXX=X
          ifnumYY=Y
          xdeftmp{ZZ}
          fi
          fi}
          ifnumX=25
          expandaftergapptoexpandaftermymatrixcontentexpandafter{tmpspace\}%
          else
          expandaftergapptoexpandaftermymatrixcontentexpandafter{tmpspace&space}%
          fi
          }
          }
          matrix [matrix of math nodes,ampersand replacement=&,left delimiter=(,
          right delimiter=),draw,row sep=3pt] (mat) {
          mymatrixcontent
          };
          foreach X [evaluate=X as Y using {int(X+1)}]in {5,10,...,20}
          {coordinate (aux1) at ($(mat-1-Y.west)!0.5!(mat-1-X.east)$);
          coordinate (aux2) at (mat-X-1.south);
          draw (mat.north -| aux1) -- (mat.south -| aux1)
          (mat.west |- aux2) -- (mat.east |- aux2);}
          foreach X/Y [evaluate=Y as Z using {int(Y+3)}] in
          {6/2,5/6,11/7,10/12,16/12,20/22}
          {draw[very thick, dots=8 per 1cm,shorten >=3pt,shorten <=3pt]
          (mat-Y-X) -- (mat-Z-X);}
          draw[line width=1.2mm, dots=4 per 1cm]
          (mat-16-18.center) -- (mat-18-20.center)
          (mat-18-16.center) -- (mat-20-18.center);
          end{tikzpicture}
          end{document}


          enter image description here






          share|improve this answer























          • I don't want to be a jerk, but filling a page with ampersands that require careful counting is not a very helpful answer.
            – Ryan Reich
            Nov 19 at 1:06










          • @RyanReich Are you really typing them one by one? If so, then I agree. But of course if you just do copy and paste, then it is not that cumbersome. Well, and if you like phantoms better (and make sure that none of the entries exceeds the size of those), I'd say this is a matter of taste, but otherwise it is a bit nontrivial to bet things aligned across different blocks. So that is just to say that I definitely did not have to count here.
            – marmot
            Nov 19 at 2:16






          • 1




            What if I make a mistake? What if I need to make a change? There may technically be a programmatic avenue into this gigantic expression but it's fragile and not apparent on the finished product. It doesn't say what it does, it just is.
            – Ryan Reich
            Nov 19 at 3:48










          • @RyanReich If you make a mistake, you will not get what you want. However, this is not specific to this matrix. You seem not to like this answer, which is fine. However, I do not really see the purpose of your comments. I believe to have told you why I did what I did. If you have a better solution post it. (And yes, I do now how to typeset a matrix programmatically. Do you want me to post such a solution? The OP has already made her choice...) And yes, the matrix is gigantic.
            – marmot
            Nov 19 at 3:57










          • @RyanReich In an attempt to remove the tension in our exchange of opinions, I added a version in which you only need to specify the nontrivial entries.
            – marmot
            Nov 19 at 5:11













          up vote
          9
          down vote










          up vote
          9
          down vote









          Welcome to TeX.SE! Actually, you do not need TikZ for this.



          documentclass{article}
          usepackage{amsmath}
          begin{document}
          [left(begin{array}{|*{5}{ccccc|}}
          hline
          & & & & & 1 & & & & & & & & & & & & & & & & & & & \
          & & & & & 2 & & & & & & & & & & & & & & & & & & & \
          & & & & & vdots & & & & & & & & & & & & & & & & & & & \
          & & & & & vdots & & & & & & & & & & & & & & & & & & & \
          & & & & & widehat{N} & & & & & & & & & & & & & & & & & & & \
          hline
          & & & & widehat{N} & & & & & & 1 & & & & & & & & & & & & & & \
          & & & & vdots & & & & & & 2 & & & & & & & & & & & & & & \
          & & & & vdots & & & & & & vdots & & & & & & & & & & & & & & \
          & & & & 2 & & & & & & vdots & & & & & & & & & & & & & & \
          & & & & 1 & & & & & & widehat{N} & & & & & & & & & & & & & & \
          hline
          & & & & & & & & & widehat{N} & & & & & & 1 & & & & & & & & & \
          & & & & & & & & & vdots & & & & & & 2 & & & & & & & & & \
          & & & & & & & & & vdots & & & & & & vdots & & & & & & & & & \
          & & & & & & & & & 2 & & & & & & vdots & & & & & & & & & \
          & & & & & & & & & 1 & & & & & & widehat{N} & & & & & & & & & \
          hline
          & & & & & & & & & & & & & & & & & bullet & & & & & & & \
          & & & & & & & & & & & & & & & & & & bullet & & & & & & \
          & & & & & & & & & & & & & & & bullet & & & & bullet & & & & & \
          & & & & & & & & & & & & & & & & bullet & & & & & & & & \
          & & & & & & & & & & & & & & & & & bullet & & & & & & & \
          hline
          & & & & & & & & & & & & & & & & & & & widehat{N} & & & & & \
          & & & & & & & & & & & & & & & & & & & vdots & & & & & \
          & & & & & & & & & & & & & & & & & & & vdots & & & & & \
          & & & & & & & & & & & & & & & & & & & 2 & & & & & \
          & & & & & & & & & & & & & & & & & & & 1 & & & & & \
          hline
          end{array}right)]
          end{document}


          enter image description here



          However, you could use TikZ to improve the appearance.



          documentclass{article}
          usepackage{amsmath}
          usepackage{tikz}
          usetikzlibrary{tikzmark}
          tikzset{% https://tex.stackexchange.com/a/156990/121799
          dots/.style args={#1per #2}{%
          line cap=round,
          dash pattern=on 0 off #2/#1
          }
          }
          begin{document}
          [left(begin{array}{|*{5}{ccccc|}}
          hline
          & & & & & 1 & & & & & & & & & & & & & & & & & & & \
          & & & & & tikzmarknode{21}{2} & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & tikzmarknode{N1}{widehat{N}} & & & & & & & & & & & & & & & & & & & \
          hline
          & & & & tikzmarknode{N2}{widehat{N}} & & & & & & 1 & & & & & & & & & & & & & & \
          & & & & & & & & & & tikzmarknode{23}{2} & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & tikzmarknode{22}{2} & & & & & & & & & & & & & & & & & & & & \
          & & & & 1 & & & & & & tikzmarknode{N3}{widehat{N}} & & & & & & & & & & & & & & \
          hline
          & & & & & & & & & tikzmarknode{N4}{widehat{N}} & & & & & & 1 & & & & & & & & & \
          & & & & & & & & & & & & & & & tikzmarknode{25}{2} & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & tikzmarknode{24}{2} & & & & & & & & & & & & & & & \
          & & & & & & & & & 1 & & & & & & tikzmarknode{N5}{widehat{N}} & & & & & & & & & \
          hline
          & & & & & & & & & & & & & & & & & bullet & & & & & & & \
          & & & & & & & & & & & & & & & & & & bullet & & & & & & \
          & & & & & & & & & & & & & & & bullet & & & & bullet & & & & & \
          & & & & & & & & & & & & & & & & bullet & & & & & & & & \
          & & & & & & & & & & & & & & & & & bullet & & & & & & & \
          hline
          & & & & & & & & & & & & & & & & & & & tikzmarknode{N6}{widehat{N}} & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & tikzmarknode{26}{2} & & & & & \
          & & & & & & & & & & & & & & & & & & & 1 & & & & & \
          hline
          end{array}right)]
          begin{tikzpicture}[overlay,remember picture]
          foreach X in {1,...,6}
          {draw[very thick, dots=8 per 1cm,shorten >=3pt,shorten <=3pt] (2X) -- (NX);}
          end{tikzpicture}
          end{document}


          enter image description here



          ADDENDUM: In an attempt to make Ryan Reich a bit happy, here is a version in which you only have to specify the nonempty entries of this sparse array. These entries are determined by the list {6/1/1,6/2/2,6/5/widehat{N},... }, where each entry has the structure <X>/<Y>/<entry> with X and Y specifying the position. Notice that one could shorten this further if you really have only one type of columns, but the point here is to allow to build arbitrary sparse matrices of that type. This code uses this answer.



          documentclass{article}
          usepackage{tikz}
          usetikzlibrary{matrix,calc}
          usepackage{etoolbox}
          tikzset{% https://tex.stackexchange.com/a/156990/121799
          dots/.style args={#1per #2}{%
          line cap=round,
          dash pattern=on 0 off #2/#1
          }
          }
          begin{document}
          edefmylist{6/1/1,6/2/2,6/5/widehat{N},%
          5/6/widehat{N},5/9/2,5/10/1,%
          11/6/1,11/7/2,11/10/widehat{N},%
          10/11/widehat{N},10/12/2,10/15/1,%
          16/11/1,16/12/2,16/15/widehat{N},%
          20/21/widehat{N},20/22/2,20/25/1%
          }
          begin{tikzpicture}
          letmymatrixcontentempty
          foreach Y in {1,...,25}{%
          foreach X in {1,...,25}
          {xdeftmp{{}}
          foreach XX/YY/ZZ in mylist
          {ifnumXX=X
          ifnumYY=Y
          xdeftmp{ZZ}
          fi
          fi}
          ifnumX=25
          expandaftergapptoexpandaftermymatrixcontentexpandafter{tmpspace\}%
          else
          expandaftergapptoexpandaftermymatrixcontentexpandafter{tmpspace&space}%
          fi
          }
          }
          matrix [matrix of math nodes,ampersand replacement=&,left delimiter=(,
          right delimiter=),draw,row sep=3pt] (mat) {
          mymatrixcontent
          };
          foreach X [evaluate=X as Y using {int(X+1)}]in {5,10,...,20}
          {coordinate (aux1) at ($(mat-1-Y.west)!0.5!(mat-1-X.east)$);
          coordinate (aux2) at (mat-X-1.south);
          draw (mat.north -| aux1) -- (mat.south -| aux1)
          (mat.west |- aux2) -- (mat.east |- aux2);}
          foreach X/Y [evaluate=Y as Z using {int(Y+3)}] in
          {6/2,5/6,11/7,10/12,16/12,20/22}
          {draw[very thick, dots=8 per 1cm,shorten >=3pt,shorten <=3pt]
          (mat-Y-X) -- (mat-Z-X);}
          draw[line width=1.2mm, dots=4 per 1cm]
          (mat-16-18.center) -- (mat-18-20.center)
          (mat-18-16.center) -- (mat-20-18.center);
          end{tikzpicture}
          end{document}


          enter image description here






          share|improve this answer














          Welcome to TeX.SE! Actually, you do not need TikZ for this.



          documentclass{article}
          usepackage{amsmath}
          begin{document}
          [left(begin{array}{|*{5}{ccccc|}}
          hline
          & & & & & 1 & & & & & & & & & & & & & & & & & & & \
          & & & & & 2 & & & & & & & & & & & & & & & & & & & \
          & & & & & vdots & & & & & & & & & & & & & & & & & & & \
          & & & & & vdots & & & & & & & & & & & & & & & & & & & \
          & & & & & widehat{N} & & & & & & & & & & & & & & & & & & & \
          hline
          & & & & widehat{N} & & & & & & 1 & & & & & & & & & & & & & & \
          & & & & vdots & & & & & & 2 & & & & & & & & & & & & & & \
          & & & & vdots & & & & & & vdots & & & & & & & & & & & & & & \
          & & & & 2 & & & & & & vdots & & & & & & & & & & & & & & \
          & & & & 1 & & & & & & widehat{N} & & & & & & & & & & & & & & \
          hline
          & & & & & & & & & widehat{N} & & & & & & 1 & & & & & & & & & \
          & & & & & & & & & vdots & & & & & & 2 & & & & & & & & & \
          & & & & & & & & & vdots & & & & & & vdots & & & & & & & & & \
          & & & & & & & & & 2 & & & & & & vdots & & & & & & & & & \
          & & & & & & & & & 1 & & & & & & widehat{N} & & & & & & & & & \
          hline
          & & & & & & & & & & & & & & & & & bullet & & & & & & & \
          & & & & & & & & & & & & & & & & & & bullet & & & & & & \
          & & & & & & & & & & & & & & & bullet & & & & bullet & & & & & \
          & & & & & & & & & & & & & & & & bullet & & & & & & & & \
          & & & & & & & & & & & & & & & & & bullet & & & & & & & \
          hline
          & & & & & & & & & & & & & & & & & & & widehat{N} & & & & & \
          & & & & & & & & & & & & & & & & & & & vdots & & & & & \
          & & & & & & & & & & & & & & & & & & & vdots & & & & & \
          & & & & & & & & & & & & & & & & & & & 2 & & & & & \
          & & & & & & & & & & & & & & & & & & & 1 & & & & & \
          hline
          end{array}right)]
          end{document}


          enter image description here



          However, you could use TikZ to improve the appearance.



          documentclass{article}
          usepackage{amsmath}
          usepackage{tikz}
          usetikzlibrary{tikzmark}
          tikzset{% https://tex.stackexchange.com/a/156990/121799
          dots/.style args={#1per #2}{%
          line cap=round,
          dash pattern=on 0 off #2/#1
          }
          }
          begin{document}
          [left(begin{array}{|*{5}{ccccc|}}
          hline
          & & & & & 1 & & & & & & & & & & & & & & & & & & & \
          & & & & & tikzmarknode{21}{2} & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & tikzmarknode{N1}{widehat{N}} & & & & & & & & & & & & & & & & & & & \
          hline
          & & & & tikzmarknode{N2}{widehat{N}} & & & & & & 1 & & & & & & & & & & & & & & \
          & & & & & & & & & & tikzmarknode{23}{2} & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & tikzmarknode{22}{2} & & & & & & & & & & & & & & & & & & & & \
          & & & & 1 & & & & & & tikzmarknode{N3}{widehat{N}} & & & & & & & & & & & & & & \
          hline
          & & & & & & & & & tikzmarknode{N4}{widehat{N}} & & & & & & 1 & & & & & & & & & \
          & & & & & & & & & & & & & & & tikzmarknode{25}{2} & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & tikzmarknode{24}{2} & & & & & & & & & & & & & & & \
          & & & & & & & & & 1 & & & & & & tikzmarknode{N5}{widehat{N}} & & & & & & & & & \
          hline
          & & & & & & & & & & & & & & & & & bullet & & & & & & & \
          & & & & & & & & & & & & & & & & & & bullet & & & & & & \
          & & & & & & & & & & & & & & & bullet & & & & bullet & & & & & \
          & & & & & & & & & & & & & & & & bullet & & & & & & & & \
          & & & & & & & & & & & & & & & & & bullet & & & & & & & \
          hline
          & & & & & & & & & & & & & & & & & & & tikzmarknode{N6}{widehat{N}} & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & & & & & & \
          & & & & & & & & & & & & & & & & & & & tikzmarknode{26}{2} & & & & & \
          & & & & & & & & & & & & & & & & & & & 1 & & & & & \
          hline
          end{array}right)]
          begin{tikzpicture}[overlay,remember picture]
          foreach X in {1,...,6}
          {draw[very thick, dots=8 per 1cm,shorten >=3pt,shorten <=3pt] (2X) -- (NX);}
          end{tikzpicture}
          end{document}


          enter image description here



          ADDENDUM: In an attempt to make Ryan Reich a bit happy, here is a version in which you only have to specify the nonempty entries of this sparse array. These entries are determined by the list {6/1/1,6/2/2,6/5/widehat{N},... }, where each entry has the structure <X>/<Y>/<entry> with X and Y specifying the position. Notice that one could shorten this further if you really have only one type of columns, but the point here is to allow to build arbitrary sparse matrices of that type. This code uses this answer.



          documentclass{article}
          usepackage{tikz}
          usetikzlibrary{matrix,calc}
          usepackage{etoolbox}
          tikzset{% https://tex.stackexchange.com/a/156990/121799
          dots/.style args={#1per #2}{%
          line cap=round,
          dash pattern=on 0 off #2/#1
          }
          }
          begin{document}
          edefmylist{6/1/1,6/2/2,6/5/widehat{N},%
          5/6/widehat{N},5/9/2,5/10/1,%
          11/6/1,11/7/2,11/10/widehat{N},%
          10/11/widehat{N},10/12/2,10/15/1,%
          16/11/1,16/12/2,16/15/widehat{N},%
          20/21/widehat{N},20/22/2,20/25/1%
          }
          begin{tikzpicture}
          letmymatrixcontentempty
          foreach Y in {1,...,25}{%
          foreach X in {1,...,25}
          {xdeftmp{{}}
          foreach XX/YY/ZZ in mylist
          {ifnumXX=X
          ifnumYY=Y
          xdeftmp{ZZ}
          fi
          fi}
          ifnumX=25
          expandaftergapptoexpandaftermymatrixcontentexpandafter{tmpspace\}%
          else
          expandaftergapptoexpandaftermymatrixcontentexpandafter{tmpspace&space}%
          fi
          }
          }
          matrix [matrix of math nodes,ampersand replacement=&,left delimiter=(,
          right delimiter=),draw,row sep=3pt] (mat) {
          mymatrixcontent
          };
          foreach X [evaluate=X as Y using {int(X+1)}]in {5,10,...,20}
          {coordinate (aux1) at ($(mat-1-Y.west)!0.5!(mat-1-X.east)$);
          coordinate (aux2) at (mat-X-1.south);
          draw (mat.north -| aux1) -- (mat.south -| aux1)
          (mat.west |- aux2) -- (mat.east |- aux2);}
          foreach X/Y [evaluate=Y as Z using {int(Y+3)}] in
          {6/2,5/6,11/7,10/12,16/12,20/22}
          {draw[very thick, dots=8 per 1cm,shorten >=3pt,shorten <=3pt]
          (mat-Y-X) -- (mat-Z-X);}
          draw[line width=1.2mm, dots=4 per 1cm]
          (mat-16-18.center) -- (mat-18-20.center)
          (mat-18-16.center) -- (mat-20-18.center);
          end{tikzpicture}
          end{document}


          enter image description here







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 19 at 5:10

























          answered Nov 18 at 22:11









          marmot

          78.3k487166




          78.3k487166












          • I don't want to be a jerk, but filling a page with ampersands that require careful counting is not a very helpful answer.
            – Ryan Reich
            Nov 19 at 1:06










          • @RyanReich Are you really typing them one by one? If so, then I agree. But of course if you just do copy and paste, then it is not that cumbersome. Well, and if you like phantoms better (and make sure that none of the entries exceeds the size of those), I'd say this is a matter of taste, but otherwise it is a bit nontrivial to bet things aligned across different blocks. So that is just to say that I definitely did not have to count here.
            – marmot
            Nov 19 at 2:16






          • 1




            What if I make a mistake? What if I need to make a change? There may technically be a programmatic avenue into this gigantic expression but it's fragile and not apparent on the finished product. It doesn't say what it does, it just is.
            – Ryan Reich
            Nov 19 at 3:48










          • @RyanReich If you make a mistake, you will not get what you want. However, this is not specific to this matrix. You seem not to like this answer, which is fine. However, I do not really see the purpose of your comments. I believe to have told you why I did what I did. If you have a better solution post it. (And yes, I do now how to typeset a matrix programmatically. Do you want me to post such a solution? The OP has already made her choice...) And yes, the matrix is gigantic.
            – marmot
            Nov 19 at 3:57










          • @RyanReich In an attempt to remove the tension in our exchange of opinions, I added a version in which you only need to specify the nontrivial entries.
            – marmot
            Nov 19 at 5:11


















          • I don't want to be a jerk, but filling a page with ampersands that require careful counting is not a very helpful answer.
            – Ryan Reich
            Nov 19 at 1:06










          • @RyanReich Are you really typing them one by one? If so, then I agree. But of course if you just do copy and paste, then it is not that cumbersome. Well, and if you like phantoms better (and make sure that none of the entries exceeds the size of those), I'd say this is a matter of taste, but otherwise it is a bit nontrivial to bet things aligned across different blocks. So that is just to say that I definitely did not have to count here.
            – marmot
            Nov 19 at 2:16






          • 1




            What if I make a mistake? What if I need to make a change? There may technically be a programmatic avenue into this gigantic expression but it's fragile and not apparent on the finished product. It doesn't say what it does, it just is.
            – Ryan Reich
            Nov 19 at 3:48










          • @RyanReich If you make a mistake, you will not get what you want. However, this is not specific to this matrix. You seem not to like this answer, which is fine. However, I do not really see the purpose of your comments. I believe to have told you why I did what I did. If you have a better solution post it. (And yes, I do now how to typeset a matrix programmatically. Do you want me to post such a solution? The OP has already made her choice...) And yes, the matrix is gigantic.
            – marmot
            Nov 19 at 3:57










          • @RyanReich In an attempt to remove the tension in our exchange of opinions, I added a version in which you only need to specify the nontrivial entries.
            – marmot
            Nov 19 at 5:11
















          I don't want to be a jerk, but filling a page with ampersands that require careful counting is not a very helpful answer.
          – Ryan Reich
          Nov 19 at 1:06




          I don't want to be a jerk, but filling a page with ampersands that require careful counting is not a very helpful answer.
          – Ryan Reich
          Nov 19 at 1:06












          @RyanReich Are you really typing them one by one? If so, then I agree. But of course if you just do copy and paste, then it is not that cumbersome. Well, and if you like phantoms better (and make sure that none of the entries exceeds the size of those), I'd say this is a matter of taste, but otherwise it is a bit nontrivial to bet things aligned across different blocks. So that is just to say that I definitely did not have to count here.
          – marmot
          Nov 19 at 2:16




          @RyanReich Are you really typing them one by one? If so, then I agree. But of course if you just do copy and paste, then it is not that cumbersome. Well, and if you like phantoms better (and make sure that none of the entries exceeds the size of those), I'd say this is a matter of taste, but otherwise it is a bit nontrivial to bet things aligned across different blocks. So that is just to say that I definitely did not have to count here.
          – marmot
          Nov 19 at 2:16




          1




          1




          What if I make a mistake? What if I need to make a change? There may technically be a programmatic avenue into this gigantic expression but it's fragile and not apparent on the finished product. It doesn't say what it does, it just is.
          – Ryan Reich
          Nov 19 at 3:48




          What if I make a mistake? What if I need to make a change? There may technically be a programmatic avenue into this gigantic expression but it's fragile and not apparent on the finished product. It doesn't say what it does, it just is.
          – Ryan Reich
          Nov 19 at 3:48












          @RyanReich If you make a mistake, you will not get what you want. However, this is not specific to this matrix. You seem not to like this answer, which is fine. However, I do not really see the purpose of your comments. I believe to have told you why I did what I did. If you have a better solution post it. (And yes, I do now how to typeset a matrix programmatically. Do you want me to post such a solution? The OP has already made her choice...) And yes, the matrix is gigantic.
          – marmot
          Nov 19 at 3:57




          @RyanReich If you make a mistake, you will not get what you want. However, this is not specific to this matrix. You seem not to like this answer, which is fine. However, I do not really see the purpose of your comments. I believe to have told you why I did what I did. If you have a better solution post it. (And yes, I do now how to typeset a matrix programmatically. Do you want me to post such a solution? The OP has already made her choice...) And yes, the matrix is gigantic.
          – marmot
          Nov 19 at 3:57












          @RyanReich In an attempt to remove the tension in our exchange of opinions, I added a version in which you only need to specify the nontrivial entries.
          – marmot
          Nov 19 at 5:11




          @RyanReich In an attempt to remove the tension in our exchange of opinions, I added a version in which you only need to specify the nontrivial entries.
          – marmot
          Nov 19 at 5:11


















           

          draft saved


          draft discarded



















































           


          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f460659%2fhow-do-i-draw-the-following-matrix-in-latex%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

          Create new schema in PostgreSQL using DBeaver

          Deepest pit of an array with Javascript: test on Codility

          Costa Masnaga