Show sparse matrices like chessboardsParametrize shading in table through TikZDrawing heatmaps using TikZLaTeX Tables: Cell value color based on its sign / conditional cell colorsymmetric matricesTikZ marking several blocks in a matrixeasybmat matrices dotted linesMatrices off the pageHomogeneous Matrices (elements size)Matrices with cryptocode packageAlign matrices in TexmakerWriting matrices in latexSystem of matricesHow to show matrix numbering under the matrices?

Unconventional Opposites

Do adult Russians normally hand-write Cyrillic as cursive or as block letters?

Can a magnetic field of a large body be stronger than its gravity?

What's the correct term for a waitress in the Middle Ages?

Sucuri detects malware on wordpress but I can't find the malicious code

What is the best option to connect old computer to modern TV

Do I add my ability modifier to the damage of the bonus-action attack granted by the Crossbow Expert feat?

Metal bar on DMM PCB

Word for a small burst of laughter that can't be held back

Did thousands of women die every year due to illegal abortions before Roe v. Wade?

Is American Express widely accepted in France?

Can an old DSLR be upgraded to match modern smartphone image quality

Why does a helium balloon rise?

Access to all elements on the page

Is it OK to bring delicacies from hometown as tokens of gratitude for an out-of-town interview?

What's the most polite way to tell a manager "shut up and let me work"?

Opposite of "Squeaky wheel gets the grease"

GFCI Outlet in Bathroom, Lights not working

Hygienic footwear for prehensile feet?

Is having a hidden directory under /etc safe?

Will TSA allow me to carry a Continuous Positive Airway Pressure (CPAP) device?

Is there any Biblical Basis for 400 years of silence between Old and New Testament?

Is there a practical difference between different types of Berachos?

Can you please explain this joke: "I'm going bananas is what I tell my bananas before I leave the house"?



Show sparse matrices like chessboards


Parametrize shading in table through TikZDrawing heatmaps using TikZLaTeX Tables: Cell value color based on its sign / conditional cell colorsymmetric matricesTikZ marking several blocks in a matrixeasybmat matrices dotted linesMatrices off the pageHomogeneous Matrices (elements size)Matrices with cryptocode packageAlign matrices in TexmakerWriting matrices in latexSystem of matricesHow to show matrix numbering under the matrices?













5















I am trying to display sparse matrices like chessboards, where white places indicates 0 entries and black ones non-zero entries (in this case matrices are boolean so every non-zero entry is a one entry), but I can't find a proper way.



Because I am looking to show more than one matrix (more in detail, I have to show matrix A and its power), I will have to print more than one on the same page and specify their layout, like figures.



For example, given this matrix as input:



| 0 | 1 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 0 |


I would expect such output:



enter image description here










share|improve this question
























  • Welcome to the site. You are expected to provide a small, complete (non)working example of code demonstrating what you have tried. An image of what you are hoping to achieve would help a great deal.

    – Steven B. Segletes
    10 hours ago











  • Perhaps this question might apply directly? tex.stackexchange.com/questions/44868/… and tex.stackexchange.com/questions/42444/… and tex.stackexchange.com/questions/174234/…

    – Steven B. Segletes
    9 hours ago
















5















I am trying to display sparse matrices like chessboards, where white places indicates 0 entries and black ones non-zero entries (in this case matrices are boolean so every non-zero entry is a one entry), but I can't find a proper way.



Because I am looking to show more than one matrix (more in detail, I have to show matrix A and its power), I will have to print more than one on the same page and specify their layout, like figures.



For example, given this matrix as input:



| 0 | 1 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 0 |


I would expect such output:



enter image description here










share|improve this question
























  • Welcome to the site. You are expected to provide a small, complete (non)working example of code demonstrating what you have tried. An image of what you are hoping to achieve would help a great deal.

    – Steven B. Segletes
    10 hours ago











  • Perhaps this question might apply directly? tex.stackexchange.com/questions/44868/… and tex.stackexchange.com/questions/42444/… and tex.stackexchange.com/questions/174234/…

    – Steven B. Segletes
    9 hours ago














5












5








5


2






I am trying to display sparse matrices like chessboards, where white places indicates 0 entries and black ones non-zero entries (in this case matrices are boolean so every non-zero entry is a one entry), but I can't find a proper way.



Because I am looking to show more than one matrix (more in detail, I have to show matrix A and its power), I will have to print more than one on the same page and specify their layout, like figures.



For example, given this matrix as input:



| 0 | 1 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 0 |


I would expect such output:



enter image description here










share|improve this question
















I am trying to display sparse matrices like chessboards, where white places indicates 0 entries and black ones non-zero entries (in this case matrices are boolean so every non-zero entry is a one entry), but I can't find a proper way.



Because I am looking to show more than one matrix (more in detail, I have to show matrix A and its power), I will have to print more than one on the same page and specify their layout, like figures.



For example, given this matrix as input:



| 0 | 1 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 0 |


I would expect such output:



enter image description here







matrices






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 9 hours ago







EagleOne

















asked 10 hours ago









EagleOneEagleOne

456




456












  • Welcome to the site. You are expected to provide a small, complete (non)working example of code demonstrating what you have tried. An image of what you are hoping to achieve would help a great deal.

    – Steven B. Segletes
    10 hours ago











  • Perhaps this question might apply directly? tex.stackexchange.com/questions/44868/… and tex.stackexchange.com/questions/42444/… and tex.stackexchange.com/questions/174234/…

    – Steven B. Segletes
    9 hours ago


















  • Welcome to the site. You are expected to provide a small, complete (non)working example of code demonstrating what you have tried. An image of what you are hoping to achieve would help a great deal.

    – Steven B. Segletes
    10 hours ago











  • Perhaps this question might apply directly? tex.stackexchange.com/questions/44868/… and tex.stackexchange.com/questions/42444/… and tex.stackexchange.com/questions/174234/…

    – Steven B. Segletes
    9 hours ago

















Welcome to the site. You are expected to provide a small, complete (non)working example of code demonstrating what you have tried. An image of what you are hoping to achieve would help a great deal.

– Steven B. Segletes
10 hours ago





Welcome to the site. You are expected to provide a small, complete (non)working example of code demonstrating what you have tried. An image of what you are hoping to achieve would help a great deal.

– Steven B. Segletes
10 hours ago













Perhaps this question might apply directly? tex.stackexchange.com/questions/44868/… and tex.stackexchange.com/questions/42444/… and tex.stackexchange.com/questions/174234/…

– Steven B. Segletes
9 hours ago






Perhaps this question might apply directly? tex.stackexchange.com/questions/44868/… and tex.stackexchange.com/questions/42444/… and tex.stackexchange.com/questions/174234/…

– Steven B. Segletes
9 hours ago











2 Answers
2






active

oldest

votes


















3














With TikZ this is rather straightforward.



documentclassarticle
usepackagetikz
usetikzlibrarymatrix
begindocument
begintikzpicture[0/.style=draw,ultra thin,1/.style=0,fill=black]
matrix[matrix of nodes,cells=minimum size=1.5em,anchor=center]
& ;
endtikzpicture
enddocument


enter image description here



If you have a simple pattern as this one, you could also do



documentclassarticle
usepackagetikz
usetikzlibrarymatrix
begindocument
begintikzpicture[my cell/.style=/utils/exec=%
pgfmathtruncatemacroitestmod(thepgfmatrixcurrentrow+thepgfmatrixcurrentcolumn,2)
ifnumitest=1
pgfkeysalso/tikz/fill=black
fi]
matrix[matrix of nodes,nodes in empty cells,
nodes=minimum size=1.5em,anchor=center,draw,ultra thin,my cell]
& & \
& & \
& & \
;
endtikzpicture
enddocument





share|improve this answer
































    4














    With a fairly natural syntax:



    documentclassarticle
    usepackageamsmath

    newlengthsparsesize
    setlengthsparsesize12pt

    newcommandsparsezero%
    begingroup
    setlengthfboxsep-0.2pt%
    setlengthfboxrule0.2pt%
    fboxhspacesparsesizerule0ptsparsesize%
    endgroup

    newcommandsparseonerulesparsesizesparsesize
    newcommandactivate[2]%
    begingrouplccode`~=`#1lowercaseendgrouplet~#2%
    mathcode`#1="8000


    newenvironmentsparsematrix
    %
    renewcommandarraystretch0%
    setlengtharraycolsep0pt%
    activate0sparsezeroactivate1sparseone%
    beginmatrix%

    endmatrix

    begindocument

    [
    beginpmatrix
    0 & 1 & 0 \
    1 & 0 & 1 \
    0 & 1 & 0
    endpmatrix
    =
    beginsparsematrix
    0 & 1 & 0 \
    1 & 0 & 1 \
    0 & 1 & 0
    endsparsematrix
    ]

    enddocument


    enter image description here



    For general matrices with integer coefficients it's a bit more difficult.



    documentclassarticle
    usepackageamsmath,xparse

    newlengthsparsesize
    setlengthsparsesize12pt
    newcommandsparsezero%
    begingroup
    setlengthfboxsep-0.2pt%
    setlengthfboxrule0.2pt%
    fboxhspacesparsesizerule0ptsparsesize%
    endgroup

    newcommandsparseonerulesparsesizesparsesize

    ExplSyntaxOn
    NewDocumentEnvironmentsparsematrixb

    renewcommandarraystretch0%
    setlengtharraycolsep0pt%
    % make a subformula
    beginmatrix
    eagleone_sparsematrix:n #1
    endmatrix



    seq_new:N l__eagleone_sparsematrix_rows_seq
    seq_new:N l__eagleone_sparsematrix_row_in_seq
    seq_new:N l__eagleone_sparsematrix_row_out_seq

    cs_new_protected:Nn eagleone_sparsematrix:n

    seq_set_split:Nnn l__eagleone_sparsematrix_rows_seq \ #1
    seq_map_function:NN l__eagleone_sparsematrix_rows_seq __eagleone_sparsematrix_row:n

    cs_new_protected:Nn __eagleone_sparsematrix_row:n

    seq_set_split:Nnn l__eagleone_sparsematrix_row_in_seq & #1
    seq_map_inline:Nn l__eagleone_sparsematrix_row_in_seq

    int_compare:nTF ##1 = 0

    seq_put_right:Nn l__eagleone_sparsematrix_row_out_seq sparsezero


    seq_put_right:Nn l__eagleone_sparsematrix_row_out_seq sparseone


    seq_use:Nn l__eagleone_sparsematrix_row_out_seq & \


    ExplSyntaxOff

    begindocument

    [
    beginpmatrix
    0 & 1 & 0 \
    1 & 0 & 1 \
    0 & 1 & 0
    endpmatrix
    =
    beginsparsematrix
    0 & 1 & 0 \
    1 & 0 & 1 \
    0 & 1 & 0
    endsparsematrix
    ]

    [
    beginsparsematrix
    0 & 1 & 0 \
    1 & 0 & 1 \
    0 & 1 & 0
    endsparsematrix^2
    =
    beginsparsematrix
    1 & 0 & 1 \
    0 & 2 & 0 \
    1 & 0 & 1
    endsparsematrix
    ]

    enddocument


    enter image description here






    share|improve this answer


















    • 1





      For my humble opinion: excellent. +1.

      – Sebastiano
      7 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
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f493392%2fshow-sparse-matrices-like-chessboards%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









    3














    With TikZ this is rather straightforward.



    documentclassarticle
    usepackagetikz
    usetikzlibrarymatrix
    begindocument
    begintikzpicture[0/.style=draw,ultra thin,1/.style=0,fill=black]
    matrix[matrix of nodes,cells=minimum size=1.5em,anchor=center]
    & ;
    endtikzpicture
    enddocument


    enter image description here



    If you have a simple pattern as this one, you could also do



    documentclassarticle
    usepackagetikz
    usetikzlibrarymatrix
    begindocument
    begintikzpicture[my cell/.style=/utils/exec=%
    pgfmathtruncatemacroitestmod(thepgfmatrixcurrentrow+thepgfmatrixcurrentcolumn,2)
    ifnumitest=1
    pgfkeysalso/tikz/fill=black
    fi]
    matrix[matrix of nodes,nodes in empty cells,
    nodes=minimum size=1.5em,anchor=center,draw,ultra thin,my cell]
    & & \
    & & \
    & & \
    ;
    endtikzpicture
    enddocument





    share|improve this answer





























      3














      With TikZ this is rather straightforward.



      documentclassarticle
      usepackagetikz
      usetikzlibrarymatrix
      begindocument
      begintikzpicture[0/.style=draw,ultra thin,1/.style=0,fill=black]
      matrix[matrix of nodes,cells=minimum size=1.5em,anchor=center]
      & ;
      endtikzpicture
      enddocument


      enter image description here



      If you have a simple pattern as this one, you could also do



      documentclassarticle
      usepackagetikz
      usetikzlibrarymatrix
      begindocument
      begintikzpicture[my cell/.style=/utils/exec=%
      pgfmathtruncatemacroitestmod(thepgfmatrixcurrentrow+thepgfmatrixcurrentcolumn,2)
      ifnumitest=1
      pgfkeysalso/tikz/fill=black
      fi]
      matrix[matrix of nodes,nodes in empty cells,
      nodes=minimum size=1.5em,anchor=center,draw,ultra thin,my cell]
      & & \
      & & \
      & & \
      ;
      endtikzpicture
      enddocument





      share|improve this answer



























        3












        3








        3







        With TikZ this is rather straightforward.



        documentclassarticle
        usepackagetikz
        usetikzlibrarymatrix
        begindocument
        begintikzpicture[0/.style=draw,ultra thin,1/.style=0,fill=black]
        matrix[matrix of nodes,cells=minimum size=1.5em,anchor=center]
        & ;
        endtikzpicture
        enddocument


        enter image description here



        If you have a simple pattern as this one, you could also do



        documentclassarticle
        usepackagetikz
        usetikzlibrarymatrix
        begindocument
        begintikzpicture[my cell/.style=/utils/exec=%
        pgfmathtruncatemacroitestmod(thepgfmatrixcurrentrow+thepgfmatrixcurrentcolumn,2)
        ifnumitest=1
        pgfkeysalso/tikz/fill=black
        fi]
        matrix[matrix of nodes,nodes in empty cells,
        nodes=minimum size=1.5em,anchor=center,draw,ultra thin,my cell]
        & & \
        & & \
        & & \
        ;
        endtikzpicture
        enddocument





        share|improve this answer















        With TikZ this is rather straightforward.



        documentclassarticle
        usepackagetikz
        usetikzlibrarymatrix
        begindocument
        begintikzpicture[0/.style=draw,ultra thin,1/.style=0,fill=black]
        matrix[matrix of nodes,cells=minimum size=1.5em,anchor=center]
        & ;
        endtikzpicture
        enddocument


        enter image description here



        If you have a simple pattern as this one, you could also do



        documentclassarticle
        usepackagetikz
        usetikzlibrarymatrix
        begindocument
        begintikzpicture[my cell/.style=/utils/exec=%
        pgfmathtruncatemacroitestmod(thepgfmatrixcurrentrow+thepgfmatrixcurrentcolumn,2)
        ifnumitest=1
        pgfkeysalso/tikz/fill=black
        fi]
        matrix[matrix of nodes,nodes in empty cells,
        nodes=minimum size=1.5em,anchor=center,draw,ultra thin,my cell]
        & & \
        & & \
        & & \
        ;
        endtikzpicture
        enddocument






        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited 8 hours ago

























        answered 8 hours ago









        marmotmarmot

        131k6166316




        131k6166316





















            4














            With a fairly natural syntax:



            documentclassarticle
            usepackageamsmath

            newlengthsparsesize
            setlengthsparsesize12pt

            newcommandsparsezero%
            begingroup
            setlengthfboxsep-0.2pt%
            setlengthfboxrule0.2pt%
            fboxhspacesparsesizerule0ptsparsesize%
            endgroup

            newcommandsparseonerulesparsesizesparsesize
            newcommandactivate[2]%
            begingrouplccode`~=`#1lowercaseendgrouplet~#2%
            mathcode`#1="8000


            newenvironmentsparsematrix
            %
            renewcommandarraystretch0%
            setlengtharraycolsep0pt%
            activate0sparsezeroactivate1sparseone%
            beginmatrix%

            endmatrix

            begindocument

            [
            beginpmatrix
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            endpmatrix
            =
            beginsparsematrix
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            endsparsematrix
            ]

            enddocument


            enter image description here



            For general matrices with integer coefficients it's a bit more difficult.



            documentclassarticle
            usepackageamsmath,xparse

            newlengthsparsesize
            setlengthsparsesize12pt
            newcommandsparsezero%
            begingroup
            setlengthfboxsep-0.2pt%
            setlengthfboxrule0.2pt%
            fboxhspacesparsesizerule0ptsparsesize%
            endgroup

            newcommandsparseonerulesparsesizesparsesize

            ExplSyntaxOn
            NewDocumentEnvironmentsparsematrixb

            renewcommandarraystretch0%
            setlengtharraycolsep0pt%
            % make a subformula
            beginmatrix
            eagleone_sparsematrix:n #1
            endmatrix



            seq_new:N l__eagleone_sparsematrix_rows_seq
            seq_new:N l__eagleone_sparsematrix_row_in_seq
            seq_new:N l__eagleone_sparsematrix_row_out_seq

            cs_new_protected:Nn eagleone_sparsematrix:n

            seq_set_split:Nnn l__eagleone_sparsematrix_rows_seq \ #1
            seq_map_function:NN l__eagleone_sparsematrix_rows_seq __eagleone_sparsematrix_row:n

            cs_new_protected:Nn __eagleone_sparsematrix_row:n

            seq_set_split:Nnn l__eagleone_sparsematrix_row_in_seq & #1
            seq_map_inline:Nn l__eagleone_sparsematrix_row_in_seq

            int_compare:nTF ##1 = 0

            seq_put_right:Nn l__eagleone_sparsematrix_row_out_seq sparsezero


            seq_put_right:Nn l__eagleone_sparsematrix_row_out_seq sparseone


            seq_use:Nn l__eagleone_sparsematrix_row_out_seq & \


            ExplSyntaxOff

            begindocument

            [
            beginpmatrix
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            endpmatrix
            =
            beginsparsematrix
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            endsparsematrix
            ]

            [
            beginsparsematrix
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            endsparsematrix^2
            =
            beginsparsematrix
            1 & 0 & 1 \
            0 & 2 & 0 \
            1 & 0 & 1
            endsparsematrix
            ]

            enddocument


            enter image description here






            share|improve this answer


















            • 1





              For my humble opinion: excellent. +1.

              – Sebastiano
              7 hours ago















            4














            With a fairly natural syntax:



            documentclassarticle
            usepackageamsmath

            newlengthsparsesize
            setlengthsparsesize12pt

            newcommandsparsezero%
            begingroup
            setlengthfboxsep-0.2pt%
            setlengthfboxrule0.2pt%
            fboxhspacesparsesizerule0ptsparsesize%
            endgroup

            newcommandsparseonerulesparsesizesparsesize
            newcommandactivate[2]%
            begingrouplccode`~=`#1lowercaseendgrouplet~#2%
            mathcode`#1="8000


            newenvironmentsparsematrix
            %
            renewcommandarraystretch0%
            setlengtharraycolsep0pt%
            activate0sparsezeroactivate1sparseone%
            beginmatrix%

            endmatrix

            begindocument

            [
            beginpmatrix
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            endpmatrix
            =
            beginsparsematrix
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            endsparsematrix
            ]

            enddocument


            enter image description here



            For general matrices with integer coefficients it's a bit more difficult.



            documentclassarticle
            usepackageamsmath,xparse

            newlengthsparsesize
            setlengthsparsesize12pt
            newcommandsparsezero%
            begingroup
            setlengthfboxsep-0.2pt%
            setlengthfboxrule0.2pt%
            fboxhspacesparsesizerule0ptsparsesize%
            endgroup

            newcommandsparseonerulesparsesizesparsesize

            ExplSyntaxOn
            NewDocumentEnvironmentsparsematrixb

            renewcommandarraystretch0%
            setlengtharraycolsep0pt%
            % make a subformula
            beginmatrix
            eagleone_sparsematrix:n #1
            endmatrix



            seq_new:N l__eagleone_sparsematrix_rows_seq
            seq_new:N l__eagleone_sparsematrix_row_in_seq
            seq_new:N l__eagleone_sparsematrix_row_out_seq

            cs_new_protected:Nn eagleone_sparsematrix:n

            seq_set_split:Nnn l__eagleone_sparsematrix_rows_seq \ #1
            seq_map_function:NN l__eagleone_sparsematrix_rows_seq __eagleone_sparsematrix_row:n

            cs_new_protected:Nn __eagleone_sparsematrix_row:n

            seq_set_split:Nnn l__eagleone_sparsematrix_row_in_seq & #1
            seq_map_inline:Nn l__eagleone_sparsematrix_row_in_seq

            int_compare:nTF ##1 = 0

            seq_put_right:Nn l__eagleone_sparsematrix_row_out_seq sparsezero


            seq_put_right:Nn l__eagleone_sparsematrix_row_out_seq sparseone


            seq_use:Nn l__eagleone_sparsematrix_row_out_seq & \


            ExplSyntaxOff

            begindocument

            [
            beginpmatrix
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            endpmatrix
            =
            beginsparsematrix
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            endsparsematrix
            ]

            [
            beginsparsematrix
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            endsparsematrix^2
            =
            beginsparsematrix
            1 & 0 & 1 \
            0 & 2 & 0 \
            1 & 0 & 1
            endsparsematrix
            ]

            enddocument


            enter image description here






            share|improve this answer


















            • 1





              For my humble opinion: excellent. +1.

              – Sebastiano
              7 hours ago













            4












            4








            4







            With a fairly natural syntax:



            documentclassarticle
            usepackageamsmath

            newlengthsparsesize
            setlengthsparsesize12pt

            newcommandsparsezero%
            begingroup
            setlengthfboxsep-0.2pt%
            setlengthfboxrule0.2pt%
            fboxhspacesparsesizerule0ptsparsesize%
            endgroup

            newcommandsparseonerulesparsesizesparsesize
            newcommandactivate[2]%
            begingrouplccode`~=`#1lowercaseendgrouplet~#2%
            mathcode`#1="8000


            newenvironmentsparsematrix
            %
            renewcommandarraystretch0%
            setlengtharraycolsep0pt%
            activate0sparsezeroactivate1sparseone%
            beginmatrix%

            endmatrix

            begindocument

            [
            beginpmatrix
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            endpmatrix
            =
            beginsparsematrix
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            endsparsematrix
            ]

            enddocument


            enter image description here



            For general matrices with integer coefficients it's a bit more difficult.



            documentclassarticle
            usepackageamsmath,xparse

            newlengthsparsesize
            setlengthsparsesize12pt
            newcommandsparsezero%
            begingroup
            setlengthfboxsep-0.2pt%
            setlengthfboxrule0.2pt%
            fboxhspacesparsesizerule0ptsparsesize%
            endgroup

            newcommandsparseonerulesparsesizesparsesize

            ExplSyntaxOn
            NewDocumentEnvironmentsparsematrixb

            renewcommandarraystretch0%
            setlengtharraycolsep0pt%
            % make a subformula
            beginmatrix
            eagleone_sparsematrix:n #1
            endmatrix



            seq_new:N l__eagleone_sparsematrix_rows_seq
            seq_new:N l__eagleone_sparsematrix_row_in_seq
            seq_new:N l__eagleone_sparsematrix_row_out_seq

            cs_new_protected:Nn eagleone_sparsematrix:n

            seq_set_split:Nnn l__eagleone_sparsematrix_rows_seq \ #1
            seq_map_function:NN l__eagleone_sparsematrix_rows_seq __eagleone_sparsematrix_row:n

            cs_new_protected:Nn __eagleone_sparsematrix_row:n

            seq_set_split:Nnn l__eagleone_sparsematrix_row_in_seq & #1
            seq_map_inline:Nn l__eagleone_sparsematrix_row_in_seq

            int_compare:nTF ##1 = 0

            seq_put_right:Nn l__eagleone_sparsematrix_row_out_seq sparsezero


            seq_put_right:Nn l__eagleone_sparsematrix_row_out_seq sparseone


            seq_use:Nn l__eagleone_sparsematrix_row_out_seq & \


            ExplSyntaxOff

            begindocument

            [
            beginpmatrix
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            endpmatrix
            =
            beginsparsematrix
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            endsparsematrix
            ]

            [
            beginsparsematrix
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            endsparsematrix^2
            =
            beginsparsematrix
            1 & 0 & 1 \
            0 & 2 & 0 \
            1 & 0 & 1
            endsparsematrix
            ]

            enddocument


            enter image description here






            share|improve this answer













            With a fairly natural syntax:



            documentclassarticle
            usepackageamsmath

            newlengthsparsesize
            setlengthsparsesize12pt

            newcommandsparsezero%
            begingroup
            setlengthfboxsep-0.2pt%
            setlengthfboxrule0.2pt%
            fboxhspacesparsesizerule0ptsparsesize%
            endgroup

            newcommandsparseonerulesparsesizesparsesize
            newcommandactivate[2]%
            begingrouplccode`~=`#1lowercaseendgrouplet~#2%
            mathcode`#1="8000


            newenvironmentsparsematrix
            %
            renewcommandarraystretch0%
            setlengtharraycolsep0pt%
            activate0sparsezeroactivate1sparseone%
            beginmatrix%

            endmatrix

            begindocument

            [
            beginpmatrix
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            endpmatrix
            =
            beginsparsematrix
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            endsparsematrix
            ]

            enddocument


            enter image description here



            For general matrices with integer coefficients it's a bit more difficult.



            documentclassarticle
            usepackageamsmath,xparse

            newlengthsparsesize
            setlengthsparsesize12pt
            newcommandsparsezero%
            begingroup
            setlengthfboxsep-0.2pt%
            setlengthfboxrule0.2pt%
            fboxhspacesparsesizerule0ptsparsesize%
            endgroup

            newcommandsparseonerulesparsesizesparsesize

            ExplSyntaxOn
            NewDocumentEnvironmentsparsematrixb

            renewcommandarraystretch0%
            setlengtharraycolsep0pt%
            % make a subformula
            beginmatrix
            eagleone_sparsematrix:n #1
            endmatrix



            seq_new:N l__eagleone_sparsematrix_rows_seq
            seq_new:N l__eagleone_sparsematrix_row_in_seq
            seq_new:N l__eagleone_sparsematrix_row_out_seq

            cs_new_protected:Nn eagleone_sparsematrix:n

            seq_set_split:Nnn l__eagleone_sparsematrix_rows_seq \ #1
            seq_map_function:NN l__eagleone_sparsematrix_rows_seq __eagleone_sparsematrix_row:n

            cs_new_protected:Nn __eagleone_sparsematrix_row:n

            seq_set_split:Nnn l__eagleone_sparsematrix_row_in_seq & #1
            seq_map_inline:Nn l__eagleone_sparsematrix_row_in_seq

            int_compare:nTF ##1 = 0

            seq_put_right:Nn l__eagleone_sparsematrix_row_out_seq sparsezero


            seq_put_right:Nn l__eagleone_sparsematrix_row_out_seq sparseone


            seq_use:Nn l__eagleone_sparsematrix_row_out_seq & \


            ExplSyntaxOff

            begindocument

            [
            beginpmatrix
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            endpmatrix
            =
            beginsparsematrix
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            endsparsematrix
            ]

            [
            beginsparsematrix
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            endsparsematrix^2
            =
            beginsparsematrix
            1 & 0 & 1 \
            0 & 2 & 0 \
            1 & 0 & 1
            endsparsematrix
            ]

            enddocument


            enter image description here







            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered 7 hours ago









            egregegreg

            745k8919513290




            745k8919513290







            • 1





              For my humble opinion: excellent. +1.

              – Sebastiano
              7 hours ago












            • 1





              For my humble opinion: excellent. +1.

              – Sebastiano
              7 hours ago







            1




            1





            For my humble opinion: excellent. +1.

            – Sebastiano
            7 hours ago





            For my humble opinion: excellent. +1.

            – Sebastiano
            7 hours ago

















            draft saved

            draft discarded
















































            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%2f493392%2fshow-sparse-matrices-like-chessboards%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

            Invision Community Contents History See also References External links Navigation menuProprietaryinvisioncommunity.comIPS Community ForumsIPS Community Forumsthis blog entry"License Changes, IP.Board 3.4, and the Future""Interview -- Matt Mecham of Ibforums""CEO Invision Power Board, Matt Mecham Is a Liar, Thief!"IPB License Explanation 1.3, 1.3.1, 2.0, and 2.1ArchivedSecurity Fixes, Updates And Enhancements For IPB 1.3.1Archived"New Demo Accounts - Invision Power Services"the original"New Default Skin"the original"Invision Power Board 3.0.0 and Applications Released"the original"Archived copy"the original"Perpetual licenses being done away with""Release Notes - Invision Power Services""Introducing: IPS Community Suite 4!"Invision Community Release Notes

            Canceling a color specificationRandomly assigning color to Graphics3D objects?Default color for Filling in Mathematica 9Coloring specific elements of sets with a prime modified order in an array plotHow to pick a color differing significantly from the colors already in a given color list?Detection of the text colorColor numbers based on their valueCan color schemes for use with ColorData include opacity specification?My dynamic color schemes

            Ласкавець круглолистий Зміст Опис | Поширення | Галерея | Примітки | Посилання | Навігаційне меню58171138361-22960890446Bupleurum rotundifoliumEuro+Med PlantbasePlants of the World Online — Kew ScienceGermplasm Resources Information Network (GRIN)Ласкавецькн. VI : Літери Ком — Левиправивши або дописавши її