Show sparse matrices like chessboardsParametrize shading in table through TikZDrawing heatmaps using...

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

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

Please help me identify this plane

Why was it possible to cause an Apple //e to shut down with SHIFT and paddle button 2?

Rotated Position of Integers

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

What if you don't bring your credit card or debit for incidentals?

Did Darth Vader wear the same suit for 20+ years?

Pros and cons of writing a book review?

How to provide realism without making readers think grimdark

How can I determine the spell save DC of a monster/NPC?

How to make thick Asian sauces?

PhD student with mental health issues and bad performance

Responsibility for visa checking

How to detach yourself from a character you're going to kill?

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

Get value of the passed argument to script importing variables from another script

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

When leasing/renting out an owned property, is there a standard ratio between monthly rent and the mortgage?

What happens if you do emergency landing on a US base in middle of the ocean?

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

If a problem only occurs randomly once in every N times on average, how many tests do I have to perform to be certain that it's now fixed?

Can a class take a different class's spell in their ritual book?

How can I add depth to my story or how do I determine if my story already has depth?



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


















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
















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 9 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
    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





















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



















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







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.



documentclass{article}
usepackage{tikz}
usetikzlibrary{matrix}
begin{document}
begin{tikzpicture}[0/.style={draw,ultra thin},1/.style={0,fill=black}]
matrix[matrix of nodes,cells={minimum size=1.5em,anchor=center}]
{|[0]| & |[1]| & |[0]| \
|[1]| & |[0]| & |[1]|\
|[0]| & |[1]| & |[0]|\
};
end{tikzpicture}
end{document}


enter image description here



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



documentclass{article}
usepackage{tikz}
usetikzlibrary{matrix}
begin{document}
begin{tikzpicture}[my cell/.style={/utils/exec={%
pgfmathtruncatemacro{itest}{mod(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}]
{ & & \
& & \
& & \
};
end{tikzpicture}
end{document}





share|improve this answer

































    4














    With a fairly natural syntax:



    documentclass{article}
    usepackage{amsmath}

    newlength{sparsesize}
    setlength{sparsesize}{12pt}

    newcommand{sparsezero}{%
    begingroup
    setlength{fboxsep}{-0.2pt}%
    setlength{fboxrule}{0.2pt}%
    fbox{hspace{sparsesize}rule{0pt}{sparsesize}}%
    endgroup
    }
    newcommand{sparseone}{rule{sparsesize}{sparsesize}}
    newcommand{activate}[2]{%
    begingrouplccode`~=`#1lowercase{endgrouplet~}#2%
    mathcode`#1="8000
    }

    newenvironment{sparsematrix}
    {%
    renewcommand{arraystretch}{0}%
    setlength{arraycolsep}{0pt}%
    activate{0}{sparsezero}activate{1}{sparseone}%
    begin{matrix}%
    }
    {end{matrix}}

    begin{document}

    [
    begin{pmatrix}
    0 & 1 & 0 \
    1 & 0 & 1 \
    0 & 1 & 0
    end{pmatrix}
    =
    begin{sparsematrix}
    0 & 1 & 0 \
    1 & 0 & 1 \
    0 & 1 & 0
    end{sparsematrix}
    ]

    end{document}


    enter image description here



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



    documentclass{article}
    usepackage{amsmath,xparse}

    newlength{sparsesize}
    setlength{sparsesize}{12pt}
    newcommand{sparsezero}{%
    begingroup
    setlength{fboxsep}{-0.2pt}%
    setlength{fboxrule}{0.2pt}%
    fbox{hspace{sparsesize}rule{0pt}{sparsesize}}%
    endgroup
    }
    newcommand{sparseone}{rule{sparsesize}{sparsesize}}

    ExplSyntaxOn
    NewDocumentEnvironment{sparsematrix}{b}
    {
    renewcommand{arraystretch}{0}%
    setlength{arraycolsep}{0pt}%
    {% make a subformula
    begin{matrix}
    eagleone_sparsematrix:n { #1 }
    end{matrix}
    }
    }{}

    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

    begin{document}

    [
    begin{pmatrix}
    0 & 1 & 0 \
    1 & 0 & 1 \
    0 & 1 & 0
    end{pmatrix}
    =
    begin{sparsematrix}
    0 & 1 & 0 \
    1 & 0 & 1 \
    0 & 1 & 0
    end{sparsematrix}
    ]

    [
    begin{sparsematrix}
    0 & 1 & 0 \
    1 & 0 & 1 \
    0 & 1 & 0
    end{sparsematrix}^2
    =
    begin{sparsematrix}
    1 & 0 & 1 \
    0 & 2 & 0 \
    1 & 0 & 1
    end{sparsematrix}
    ]

    end{document}


    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.



    documentclass{article}
    usepackage{tikz}
    usetikzlibrary{matrix}
    begin{document}
    begin{tikzpicture}[0/.style={draw,ultra thin},1/.style={0,fill=black}]
    matrix[matrix of nodes,cells={minimum size=1.5em,anchor=center}]
    {|[0]| & |[1]| & |[0]| \
    |[1]| & |[0]| & |[1]|\
    |[0]| & |[1]| & |[0]|\
    };
    end{tikzpicture}
    end{document}


    enter image description here



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



    documentclass{article}
    usepackage{tikz}
    usetikzlibrary{matrix}
    begin{document}
    begin{tikzpicture}[my cell/.style={/utils/exec={%
    pgfmathtruncatemacro{itest}{mod(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}]
    { & & \
    & & \
    & & \
    };
    end{tikzpicture}
    end{document}





    share|improve this answer






























      3














      With TikZ this is rather straightforward.



      documentclass{article}
      usepackage{tikz}
      usetikzlibrary{matrix}
      begin{document}
      begin{tikzpicture}[0/.style={draw,ultra thin},1/.style={0,fill=black}]
      matrix[matrix of nodes,cells={minimum size=1.5em,anchor=center}]
      {|[0]| & |[1]| & |[0]| \
      |[1]| & |[0]| & |[1]|\
      |[0]| & |[1]| & |[0]|\
      };
      end{tikzpicture}
      end{document}


      enter image description here



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



      documentclass{article}
      usepackage{tikz}
      usetikzlibrary{matrix}
      begin{document}
      begin{tikzpicture}[my cell/.style={/utils/exec={%
      pgfmathtruncatemacro{itest}{mod(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}]
      { & & \
      & & \
      & & \
      };
      end{tikzpicture}
      end{document}





      share|improve this answer




























        3












        3








        3







        With TikZ this is rather straightforward.



        documentclass{article}
        usepackage{tikz}
        usetikzlibrary{matrix}
        begin{document}
        begin{tikzpicture}[0/.style={draw,ultra thin},1/.style={0,fill=black}]
        matrix[matrix of nodes,cells={minimum size=1.5em,anchor=center}]
        {|[0]| & |[1]| & |[0]| \
        |[1]| & |[0]| & |[1]|\
        |[0]| & |[1]| & |[0]|\
        };
        end{tikzpicture}
        end{document}


        enter image description here



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



        documentclass{article}
        usepackage{tikz}
        usetikzlibrary{matrix}
        begin{document}
        begin{tikzpicture}[my cell/.style={/utils/exec={%
        pgfmathtruncatemacro{itest}{mod(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}]
        { & & \
        & & \
        & & \
        };
        end{tikzpicture}
        end{document}





        share|improve this answer















        With TikZ this is rather straightforward.



        documentclass{article}
        usepackage{tikz}
        usetikzlibrary{matrix}
        begin{document}
        begin{tikzpicture}[0/.style={draw,ultra thin},1/.style={0,fill=black}]
        matrix[matrix of nodes,cells={minimum size=1.5em,anchor=center}]
        {|[0]| & |[1]| & |[0]| \
        |[1]| & |[0]| & |[1]|\
        |[0]| & |[1]| & |[0]|\
        };
        end{tikzpicture}
        end{document}


        enter image description here



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



        documentclass{article}
        usepackage{tikz}
        usetikzlibrary{matrix}
        begin{document}
        begin{tikzpicture}[my cell/.style={/utils/exec={%
        pgfmathtruncatemacro{itest}{mod(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}]
        { & & \
        & & \
        & & \
        };
        end{tikzpicture}
        end{document}






        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:



            documentclass{article}
            usepackage{amsmath}

            newlength{sparsesize}
            setlength{sparsesize}{12pt}

            newcommand{sparsezero}{%
            begingroup
            setlength{fboxsep}{-0.2pt}%
            setlength{fboxrule}{0.2pt}%
            fbox{hspace{sparsesize}rule{0pt}{sparsesize}}%
            endgroup
            }
            newcommand{sparseone}{rule{sparsesize}{sparsesize}}
            newcommand{activate}[2]{%
            begingrouplccode`~=`#1lowercase{endgrouplet~}#2%
            mathcode`#1="8000
            }

            newenvironment{sparsematrix}
            {%
            renewcommand{arraystretch}{0}%
            setlength{arraycolsep}{0pt}%
            activate{0}{sparsezero}activate{1}{sparseone}%
            begin{matrix}%
            }
            {end{matrix}}

            begin{document}

            [
            begin{pmatrix}
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            end{pmatrix}
            =
            begin{sparsematrix}
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            end{sparsematrix}
            ]

            end{document}


            enter image description here



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



            documentclass{article}
            usepackage{amsmath,xparse}

            newlength{sparsesize}
            setlength{sparsesize}{12pt}
            newcommand{sparsezero}{%
            begingroup
            setlength{fboxsep}{-0.2pt}%
            setlength{fboxrule}{0.2pt}%
            fbox{hspace{sparsesize}rule{0pt}{sparsesize}}%
            endgroup
            }
            newcommand{sparseone}{rule{sparsesize}{sparsesize}}

            ExplSyntaxOn
            NewDocumentEnvironment{sparsematrix}{b}
            {
            renewcommand{arraystretch}{0}%
            setlength{arraycolsep}{0pt}%
            {% make a subformula
            begin{matrix}
            eagleone_sparsematrix:n { #1 }
            end{matrix}
            }
            }{}

            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

            begin{document}

            [
            begin{pmatrix}
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            end{pmatrix}
            =
            begin{sparsematrix}
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            end{sparsematrix}
            ]

            [
            begin{sparsematrix}
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            end{sparsematrix}^2
            =
            begin{sparsematrix}
            1 & 0 & 1 \
            0 & 2 & 0 \
            1 & 0 & 1
            end{sparsematrix}
            ]

            end{document}


            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:



            documentclass{article}
            usepackage{amsmath}

            newlength{sparsesize}
            setlength{sparsesize}{12pt}

            newcommand{sparsezero}{%
            begingroup
            setlength{fboxsep}{-0.2pt}%
            setlength{fboxrule}{0.2pt}%
            fbox{hspace{sparsesize}rule{0pt}{sparsesize}}%
            endgroup
            }
            newcommand{sparseone}{rule{sparsesize}{sparsesize}}
            newcommand{activate}[2]{%
            begingrouplccode`~=`#1lowercase{endgrouplet~}#2%
            mathcode`#1="8000
            }

            newenvironment{sparsematrix}
            {%
            renewcommand{arraystretch}{0}%
            setlength{arraycolsep}{0pt}%
            activate{0}{sparsezero}activate{1}{sparseone}%
            begin{matrix}%
            }
            {end{matrix}}

            begin{document}

            [
            begin{pmatrix}
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            end{pmatrix}
            =
            begin{sparsematrix}
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            end{sparsematrix}
            ]

            end{document}


            enter image description here



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



            documentclass{article}
            usepackage{amsmath,xparse}

            newlength{sparsesize}
            setlength{sparsesize}{12pt}
            newcommand{sparsezero}{%
            begingroup
            setlength{fboxsep}{-0.2pt}%
            setlength{fboxrule}{0.2pt}%
            fbox{hspace{sparsesize}rule{0pt}{sparsesize}}%
            endgroup
            }
            newcommand{sparseone}{rule{sparsesize}{sparsesize}}

            ExplSyntaxOn
            NewDocumentEnvironment{sparsematrix}{b}
            {
            renewcommand{arraystretch}{0}%
            setlength{arraycolsep}{0pt}%
            {% make a subformula
            begin{matrix}
            eagleone_sparsematrix:n { #1 }
            end{matrix}
            }
            }{}

            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

            begin{document}

            [
            begin{pmatrix}
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            end{pmatrix}
            =
            begin{sparsematrix}
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            end{sparsematrix}
            ]

            [
            begin{sparsematrix}
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            end{sparsematrix}^2
            =
            begin{sparsematrix}
            1 & 0 & 1 \
            0 & 2 & 0 \
            1 & 0 & 1
            end{sparsematrix}
            ]

            end{document}


            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:



            documentclass{article}
            usepackage{amsmath}

            newlength{sparsesize}
            setlength{sparsesize}{12pt}

            newcommand{sparsezero}{%
            begingroup
            setlength{fboxsep}{-0.2pt}%
            setlength{fboxrule}{0.2pt}%
            fbox{hspace{sparsesize}rule{0pt}{sparsesize}}%
            endgroup
            }
            newcommand{sparseone}{rule{sparsesize}{sparsesize}}
            newcommand{activate}[2]{%
            begingrouplccode`~=`#1lowercase{endgrouplet~}#2%
            mathcode`#1="8000
            }

            newenvironment{sparsematrix}
            {%
            renewcommand{arraystretch}{0}%
            setlength{arraycolsep}{0pt}%
            activate{0}{sparsezero}activate{1}{sparseone}%
            begin{matrix}%
            }
            {end{matrix}}

            begin{document}

            [
            begin{pmatrix}
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            end{pmatrix}
            =
            begin{sparsematrix}
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            end{sparsematrix}
            ]

            end{document}


            enter image description here



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



            documentclass{article}
            usepackage{amsmath,xparse}

            newlength{sparsesize}
            setlength{sparsesize}{12pt}
            newcommand{sparsezero}{%
            begingroup
            setlength{fboxsep}{-0.2pt}%
            setlength{fboxrule}{0.2pt}%
            fbox{hspace{sparsesize}rule{0pt}{sparsesize}}%
            endgroup
            }
            newcommand{sparseone}{rule{sparsesize}{sparsesize}}

            ExplSyntaxOn
            NewDocumentEnvironment{sparsematrix}{b}
            {
            renewcommand{arraystretch}{0}%
            setlength{arraycolsep}{0pt}%
            {% make a subformula
            begin{matrix}
            eagleone_sparsematrix:n { #1 }
            end{matrix}
            }
            }{}

            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

            begin{document}

            [
            begin{pmatrix}
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            end{pmatrix}
            =
            begin{sparsematrix}
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            end{sparsematrix}
            ]

            [
            begin{sparsematrix}
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            end{sparsematrix}^2
            =
            begin{sparsematrix}
            1 & 0 & 1 \
            0 & 2 & 0 \
            1 & 0 & 1
            end{sparsematrix}
            ]

            end{document}


            enter image description here






            share|improve this answer













            With a fairly natural syntax:



            documentclass{article}
            usepackage{amsmath}

            newlength{sparsesize}
            setlength{sparsesize}{12pt}

            newcommand{sparsezero}{%
            begingroup
            setlength{fboxsep}{-0.2pt}%
            setlength{fboxrule}{0.2pt}%
            fbox{hspace{sparsesize}rule{0pt}{sparsesize}}%
            endgroup
            }
            newcommand{sparseone}{rule{sparsesize}{sparsesize}}
            newcommand{activate}[2]{%
            begingrouplccode`~=`#1lowercase{endgrouplet~}#2%
            mathcode`#1="8000
            }

            newenvironment{sparsematrix}
            {%
            renewcommand{arraystretch}{0}%
            setlength{arraycolsep}{0pt}%
            activate{0}{sparsezero}activate{1}{sparseone}%
            begin{matrix}%
            }
            {end{matrix}}

            begin{document}

            [
            begin{pmatrix}
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            end{pmatrix}
            =
            begin{sparsematrix}
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            end{sparsematrix}
            ]

            end{document}


            enter image description here



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



            documentclass{article}
            usepackage{amsmath,xparse}

            newlength{sparsesize}
            setlength{sparsesize}{12pt}
            newcommand{sparsezero}{%
            begingroup
            setlength{fboxsep}{-0.2pt}%
            setlength{fboxrule}{0.2pt}%
            fbox{hspace{sparsesize}rule{0pt}{sparsesize}}%
            endgroup
            }
            newcommand{sparseone}{rule{sparsesize}{sparsesize}}

            ExplSyntaxOn
            NewDocumentEnvironment{sparsematrix}{b}
            {
            renewcommand{arraystretch}{0}%
            setlength{arraycolsep}{0pt}%
            {% make a subformula
            begin{matrix}
            eagleone_sparsematrix:n { #1 }
            end{matrix}
            }
            }{}

            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

            begin{document}

            [
            begin{pmatrix}
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            end{pmatrix}
            =
            begin{sparsematrix}
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            end{sparsematrix}
            ]

            [
            begin{sparsematrix}
            0 & 1 & 0 \
            1 & 0 & 1 \
            0 & 1 & 0
            end{sparsematrix}^2
            =
            begin{sparsematrix}
            1 & 0 & 1 \
            0 & 2 & 0 \
            1 & 0 & 1
            end{sparsematrix}
            ]

            end{document}


            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

            Taj Mahal Inhaltsverzeichnis Aufbau | Geschichte | 350-Jahr-Feier | Heutige Bedeutung | Siehe auch |...

            Baia Sprie Cuprins Etimologie | Istorie | Demografie | Politică și administrație | Arii naturale...

            Ciclooctatetraenă Vezi și | Bibliografie | Meniu de navigare637866text4148569-500570979m