Draw a checker pattern with a black X in the center





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{
margin-bottom:0;
}








12

















I am trying to recreate the following image in TikZ



enter image description here



Using some old code I was able to produce the following result



enter image description here



While I was able to produce the correct result, I feel that my solution was a bit strange as it required two passes. Any suggestions for alternative approaches, or improvements to the code are more than welcome.



documentclass[tikz]{standalone}

begin{document}

begin{tikzpicture}[x=1cm]
edefsize{4}
foreach x in {0,...,size} foreach y in {0,...,size}
{
pgfmathparse{mod(x+y,size) ? "none" : "black"}
edefcolour{pgfmathresult}
path[draw=black, fill=colour] (x,y) rectangle ++ (1,1);

pgfmathparse{x==y ? "black" : "none"}
edefcolour{pgfmathresult}
path[fill=colour] (x,y) rectangle ++ (1,1);
}
draw (0,0)--(0,size+1)--(size+1,size+1)--(size+1,0)--cycle;
end{tikzpicture}

end{document}









share|improve this question



































    12

















    I am trying to recreate the following image in TikZ



    enter image description here



    Using some old code I was able to produce the following result



    enter image description here



    While I was able to produce the correct result, I feel that my solution was a bit strange as it required two passes. Any suggestions for alternative approaches, or improvements to the code are more than welcome.



    documentclass[tikz]{standalone}

    begin{document}

    begin{tikzpicture}[x=1cm]
    edefsize{4}
    foreach x in {0,...,size} foreach y in {0,...,size}
    {
    pgfmathparse{mod(x+y,size) ? "none" : "black"}
    edefcolour{pgfmathresult}
    path[draw=black, fill=colour] (x,y) rectangle ++ (1,1);

    pgfmathparse{x==y ? "black" : "none"}
    edefcolour{pgfmathresult}
    path[fill=colour] (x,y) rectangle ++ (1,1);
    }
    draw (0,0)--(0,size+1)--(size+1,size+1)--(size+1,0)--cycle;
    end{tikzpicture}

    end{document}









    share|improve this question































      12












      12








      12


      1






      I am trying to recreate the following image in TikZ



      enter image description here



      Using some old code I was able to produce the following result



      enter image description here



      While I was able to produce the correct result, I feel that my solution was a bit strange as it required two passes. Any suggestions for alternative approaches, or improvements to the code are more than welcome.



      documentclass[tikz]{standalone}

      begin{document}

      begin{tikzpicture}[x=1cm]
      edefsize{4}
      foreach x in {0,...,size} foreach y in {0,...,size}
      {
      pgfmathparse{mod(x+y,size) ? "none" : "black"}
      edefcolour{pgfmathresult}
      path[draw=black, fill=colour] (x,y) rectangle ++ (1,1);

      pgfmathparse{x==y ? "black" : "none"}
      edefcolour{pgfmathresult}
      path[fill=colour] (x,y) rectangle ++ (1,1);
      }
      draw (0,0)--(0,size+1)--(size+1,size+1)--(size+1,0)--cycle;
      end{tikzpicture}

      end{document}









      share|improve this question
















      I am trying to recreate the following image in TikZ



      enter image description here



      Using some old code I was able to produce the following result



      enter image description here



      While I was able to produce the correct result, I feel that my solution was a bit strange as it required two passes. Any suggestions for alternative approaches, or improvements to the code are more than welcome.



      documentclass[tikz]{standalone}

      begin{document}

      begin{tikzpicture}[x=1cm]
      edefsize{4}
      foreach x in {0,...,size} foreach y in {0,...,size}
      {
      pgfmathparse{mod(x+y,size) ? "none" : "black"}
      edefcolour{pgfmathresult}
      path[draw=black, fill=colour] (x,y) rectangle ++ (1,1);

      pgfmathparse{x==y ? "black" : "none"}
      edefcolour{pgfmathresult}
      path[fill=colour] (x,y) rectangle ++ (1,1);
      }
      draw (0,0)--(0,size+1)--(size+1,size+1)--(size+1,0)--cycle;
      end{tikzpicture}

      end{document}






      tikz-pgf code-review






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question



      share|improve this question








      edited May 28 at 4:14









      Community

      1




      1










      asked May 27 at 14:00









      N3buchadnezzarN3buchadnezzar

      4,9576 gold badges44 silver badges99 bronze badges




      4,9576 gold badges44 silver badges99 bronze badges

























          4 Answers
          4






          active

          oldest

          votes


















          15


















          With tikz:



          documentclass[tikz]{standalone}

          begin{document}
          begin{tikzpicture}[
          node distance = 0mm,
          box/.style = {draw, minimum size=10mm, fill=black,
          outer sep=0pt},
          ]
          edefsize{4}
          foreach y in {0,...,size}
          foreach x in {0,...,size}
          {ifnumx=y
          node[box] at (x,size-y) {};
          node[box] at (x,y) {};
          else
          node[box,fill=none] at (x,y) {};
          fi
          }
          end{tikzpicture}
          end{document}


          enter image description here



          Note: Value of size had to be zero or any even natural number (0, 2, 4, ...)



          addendum:




          • default baseline of above image is as (current bounding box.south)˙ For series of those images for different value ofsize` is:


          documentclass{article}
          usepackage{tikz}
          usepackage{tabularx}
          newcolumntype{C}{>{centeringarraybackslash}X}

          begin{document}
          begin{figure}
          begin{tabularx}{linewidth}{>{hsize=0.5hsize}C C >{hsize=1.5hsize}C}
          begin{tikzpicture}[baseline=(current bounding box.south),
          node distance = 0mm,
          box/.style = {draw, minimum size=10mm, fill=black,
          outer sep=0pt},
          ]
          edefsize{0} % in this MWE the meaning of `size` is changed
          foreach y in {0,...,size}
          foreach x in {0,...,size}
          {ifnumx=y
          node[box] at (x,size-y) {};
          node[box] at (x,y) {};
          else
          node[box,fill=none] at (x,y) {};
          fi
          }
          end{tikzpicture}
          caption{}
          &
          begin{tikzpicture}[%baseline=(current bounding box.south),
          node distance = 0mm,
          box/.style = {draw, minimum size=10mm, fill=black,
          outer sep=0pt},
          ]
          edefsize{1}
          foreach y in {0,...,2*size} % changed, now number of boxes is odd
          foreach x in {0,...,2*size} % changed,
          {ifnumx=y
          node[box] at (x,size-y) {};
          node[box] at (x,y) {};
          else
          node[box,fill=none] at (x,y) {};
          fi
          }
          end{tikzpicture}
          caption{}
          &
          begin{tikzpicture}[baseline=(current bounding box.south),
          node distance = 0mm,
          box/.style = {draw, minimum size=10mm, fill=black,
          outer sep=0pt},
          ]
          edefsize{2}
          foreach y in {0,...,size}
          foreach x in {0,...,size}
          {ifnumx=y
          node[box] at (x,size-y) {};
          node[box] at (x,y) {};
          else
          node[box,fill=none] at (x,y) {};
          fi
          }
          end{tikzpicture}
          caption{}
          end{tabularx}
          end{figure}
          end{document}


          enter image description here






          share|improve this answer





























          • How can this produce the correct case with only one black box?

            – N3buchadnezzar
            May 27 at 15:33











          • With edefsize{1}? I'm not sure if I understood your comment correctly.

            – Zarko
            May 27 at 15:36











          • size{1} produces 4 black squares not 1. Here is how it looks for n=1 and n=2, not the same baseheight either. i.imgur.com/0OamEbM.png

            – N3buchadnezzar
            May 27 at 15:37













          • Indeed. It should be size{0}.

            – Zarko
            May 27 at 15:41






          • 1





            @N3buchadnezzar, images are aligned to their bottom side. also see "Note" in edited answer.

            – Zarko
            May 27 at 16:06





















          10


















          A PSTricks solution only for fun purposes!



          enter image description here



          documentclass[border=1pt]{standalone}
          usepackage{pstricks}
          defobj#1{%
          pspicture[dimen=m](#1,#1)
          multips(0,0)(0,1){#1}{multips(0,0)(1,0){#1}{psframe(1,1)}}
          multips(0,0)(1,1){#1}{psframe*(1,1)}
          multips(0,#1)(1,-1){#1}{psframe*(1,-1)}
          endpspicture}

          begin{document}
          foreach i in {3,5,7}{obj{i}quad}
          end{document}


          Edit



          I invented the algorithm (that has not been patented yet) as follows. No nested loop is needed.



          enter image description here



          documentclass[border=12pt]{standalone}
          usepackage[nomessages]{fp}
          usepackage{xintexpr}
          usepackage{pstricks}
          psset{unit=5mm}
          defobj#1{%
          pspicture[dimen=m](#1,#1)
          FPevalN{#1*#1-1}
          foreach j in {0,...,N}
          {
          FPevaly{trunc(j/#1:0)}
          FPevalx{j-#1*y}
          xintifboolexpr{x=y||(x+y)=(#1-1)}
          {psframe[fillstyle=solid,fillcolor=black](x,y)(+x+1,y+1)}
          {psframe(x,y)(+x+1,y+1)}
          }
          endpspicture}
          begin{document}
          foreach i in {1,3,5,7,9}{obj{i}quad}
          end{document}





          share|improve this answer





























          • One downvote detected...

            – Artificial Stupidity
            May 27 at 14:31











          • Accessing 2 dimensional arrays with a single-indexed pointer is much faster.

            – Artificial Stupidity
            May 27 at 17:04





















          9


















          Edit:
          The following works for all values of size



          documentclass[tikz]{standalone}

          begin{document}

          begin{tikzpicture}
          edefsize{4}
          foreach x in {0,...,size} foreach y in {0,...,size} {
          pgfmathsetmacro{colour}{(x==y || x+y==size) ? "black" : "none"}
          draw[fill=colour] (x,y) rectangle ++ (1,1);
          }
          end{tikzpicture}

          end{document}


          enter image description here






          share|improve this answer





























          • How can this produce the correct case with only one black box?

            – N3buchadnezzar
            May 27 at 15:33











          • The mod function was not a good choice, pgfmathparse{x+y==size ? "black" : "colour"} is better.

            – AboAmmar
            May 27 at 17:00





















          1


















          I do not see the reason for a double loop, nor complicated conditions.



          documentclass[tikz,border=3.14mm]{standalone}
          begin{document}
          begin{tikzpicture}[xboard/.style={insert path={
          (0,0) grid (#1,#1)
          foreach X in {1,...,#1}
          {(X-0.5,X-0.5) pic{bx} (X-0.5,#1-X+0.5) pic{bx}}}},
          pics/bx/.style={code={fill (-0.5,-0.5) rectangle (0.5,0.5);}}]
          draw[xboard=1] [xshift=2cm,xboard=3]
          [xshift=4cm,xboard=5] [xshift=6cm,xboard=7];
          end{tikzpicture}
          end{document}


          enter image description here






          share|improve this answer




























            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/4.0/"u003ecc by-sa 4.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%2f492863%2fdraw-a-checker-pattern-with-a-black-x-in-the-center%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown


























            4 Answers
            4






            active

            oldest

            votes








            4 Answers
            4






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            15


















            With tikz:



            documentclass[tikz]{standalone}

            begin{document}
            begin{tikzpicture}[
            node distance = 0mm,
            box/.style = {draw, minimum size=10mm, fill=black,
            outer sep=0pt},
            ]
            edefsize{4}
            foreach y in {0,...,size}
            foreach x in {0,...,size}
            {ifnumx=y
            node[box] at (x,size-y) {};
            node[box] at (x,y) {};
            else
            node[box,fill=none] at (x,y) {};
            fi
            }
            end{tikzpicture}
            end{document}


            enter image description here



            Note: Value of size had to be zero or any even natural number (0, 2, 4, ...)



            addendum:




            • default baseline of above image is as (current bounding box.south)˙ For series of those images for different value ofsize` is:


            documentclass{article}
            usepackage{tikz}
            usepackage{tabularx}
            newcolumntype{C}{>{centeringarraybackslash}X}

            begin{document}
            begin{figure}
            begin{tabularx}{linewidth}{>{hsize=0.5hsize}C C >{hsize=1.5hsize}C}
            begin{tikzpicture}[baseline=(current bounding box.south),
            node distance = 0mm,
            box/.style = {draw, minimum size=10mm, fill=black,
            outer sep=0pt},
            ]
            edefsize{0} % in this MWE the meaning of `size` is changed
            foreach y in {0,...,size}
            foreach x in {0,...,size}
            {ifnumx=y
            node[box] at (x,size-y) {};
            node[box] at (x,y) {};
            else
            node[box,fill=none] at (x,y) {};
            fi
            }
            end{tikzpicture}
            caption{}
            &
            begin{tikzpicture}[%baseline=(current bounding box.south),
            node distance = 0mm,
            box/.style = {draw, minimum size=10mm, fill=black,
            outer sep=0pt},
            ]
            edefsize{1}
            foreach y in {0,...,2*size} % changed, now number of boxes is odd
            foreach x in {0,...,2*size} % changed,
            {ifnumx=y
            node[box] at (x,size-y) {};
            node[box] at (x,y) {};
            else
            node[box,fill=none] at (x,y) {};
            fi
            }
            end{tikzpicture}
            caption{}
            &
            begin{tikzpicture}[baseline=(current bounding box.south),
            node distance = 0mm,
            box/.style = {draw, minimum size=10mm, fill=black,
            outer sep=0pt},
            ]
            edefsize{2}
            foreach y in {0,...,size}
            foreach x in {0,...,size}
            {ifnumx=y
            node[box] at (x,size-y) {};
            node[box] at (x,y) {};
            else
            node[box,fill=none] at (x,y) {};
            fi
            }
            end{tikzpicture}
            caption{}
            end{tabularx}
            end{figure}
            end{document}


            enter image description here






            share|improve this answer





























            • How can this produce the correct case with only one black box?

              – N3buchadnezzar
              May 27 at 15:33











            • With edefsize{1}? I'm not sure if I understood your comment correctly.

              – Zarko
              May 27 at 15:36











            • size{1} produces 4 black squares not 1. Here is how it looks for n=1 and n=2, not the same baseheight either. i.imgur.com/0OamEbM.png

              – N3buchadnezzar
              May 27 at 15:37













            • Indeed. It should be size{0}.

              – Zarko
              May 27 at 15:41






            • 1





              @N3buchadnezzar, images are aligned to their bottom side. also see "Note" in edited answer.

              – Zarko
              May 27 at 16:06


















            15


















            With tikz:



            documentclass[tikz]{standalone}

            begin{document}
            begin{tikzpicture}[
            node distance = 0mm,
            box/.style = {draw, minimum size=10mm, fill=black,
            outer sep=0pt},
            ]
            edefsize{4}
            foreach y in {0,...,size}
            foreach x in {0,...,size}
            {ifnumx=y
            node[box] at (x,size-y) {};
            node[box] at (x,y) {};
            else
            node[box,fill=none] at (x,y) {};
            fi
            }
            end{tikzpicture}
            end{document}


            enter image description here



            Note: Value of size had to be zero or any even natural number (0, 2, 4, ...)



            addendum:




            • default baseline of above image is as (current bounding box.south)˙ For series of those images for different value ofsize` is:


            documentclass{article}
            usepackage{tikz}
            usepackage{tabularx}
            newcolumntype{C}{>{centeringarraybackslash}X}

            begin{document}
            begin{figure}
            begin{tabularx}{linewidth}{>{hsize=0.5hsize}C C >{hsize=1.5hsize}C}
            begin{tikzpicture}[baseline=(current bounding box.south),
            node distance = 0mm,
            box/.style = {draw, minimum size=10mm, fill=black,
            outer sep=0pt},
            ]
            edefsize{0} % in this MWE the meaning of `size` is changed
            foreach y in {0,...,size}
            foreach x in {0,...,size}
            {ifnumx=y
            node[box] at (x,size-y) {};
            node[box] at (x,y) {};
            else
            node[box,fill=none] at (x,y) {};
            fi
            }
            end{tikzpicture}
            caption{}
            &
            begin{tikzpicture}[%baseline=(current bounding box.south),
            node distance = 0mm,
            box/.style = {draw, minimum size=10mm, fill=black,
            outer sep=0pt},
            ]
            edefsize{1}
            foreach y in {0,...,2*size} % changed, now number of boxes is odd
            foreach x in {0,...,2*size} % changed,
            {ifnumx=y
            node[box] at (x,size-y) {};
            node[box] at (x,y) {};
            else
            node[box,fill=none] at (x,y) {};
            fi
            }
            end{tikzpicture}
            caption{}
            &
            begin{tikzpicture}[baseline=(current bounding box.south),
            node distance = 0mm,
            box/.style = {draw, minimum size=10mm, fill=black,
            outer sep=0pt},
            ]
            edefsize{2}
            foreach y in {0,...,size}
            foreach x in {0,...,size}
            {ifnumx=y
            node[box] at (x,size-y) {};
            node[box] at (x,y) {};
            else
            node[box,fill=none] at (x,y) {};
            fi
            }
            end{tikzpicture}
            caption{}
            end{tabularx}
            end{figure}
            end{document}


            enter image description here






            share|improve this answer





























            • How can this produce the correct case with only one black box?

              – N3buchadnezzar
              May 27 at 15:33











            • With edefsize{1}? I'm not sure if I understood your comment correctly.

              – Zarko
              May 27 at 15:36











            • size{1} produces 4 black squares not 1. Here is how it looks for n=1 and n=2, not the same baseheight either. i.imgur.com/0OamEbM.png

              – N3buchadnezzar
              May 27 at 15:37













            • Indeed. It should be size{0}.

              – Zarko
              May 27 at 15:41






            • 1





              @N3buchadnezzar, images are aligned to their bottom side. also see "Note" in edited answer.

              – Zarko
              May 27 at 16:06
















            15














            15










            15









            With tikz:



            documentclass[tikz]{standalone}

            begin{document}
            begin{tikzpicture}[
            node distance = 0mm,
            box/.style = {draw, minimum size=10mm, fill=black,
            outer sep=0pt},
            ]
            edefsize{4}
            foreach y in {0,...,size}
            foreach x in {0,...,size}
            {ifnumx=y
            node[box] at (x,size-y) {};
            node[box] at (x,y) {};
            else
            node[box,fill=none] at (x,y) {};
            fi
            }
            end{tikzpicture}
            end{document}


            enter image description here



            Note: Value of size had to be zero or any even natural number (0, 2, 4, ...)



            addendum:




            • default baseline of above image is as (current bounding box.south)˙ For series of those images for different value ofsize` is:


            documentclass{article}
            usepackage{tikz}
            usepackage{tabularx}
            newcolumntype{C}{>{centeringarraybackslash}X}

            begin{document}
            begin{figure}
            begin{tabularx}{linewidth}{>{hsize=0.5hsize}C C >{hsize=1.5hsize}C}
            begin{tikzpicture}[baseline=(current bounding box.south),
            node distance = 0mm,
            box/.style = {draw, minimum size=10mm, fill=black,
            outer sep=0pt},
            ]
            edefsize{0} % in this MWE the meaning of `size` is changed
            foreach y in {0,...,size}
            foreach x in {0,...,size}
            {ifnumx=y
            node[box] at (x,size-y) {};
            node[box] at (x,y) {};
            else
            node[box,fill=none] at (x,y) {};
            fi
            }
            end{tikzpicture}
            caption{}
            &
            begin{tikzpicture}[%baseline=(current bounding box.south),
            node distance = 0mm,
            box/.style = {draw, minimum size=10mm, fill=black,
            outer sep=0pt},
            ]
            edefsize{1}
            foreach y in {0,...,2*size} % changed, now number of boxes is odd
            foreach x in {0,...,2*size} % changed,
            {ifnumx=y
            node[box] at (x,size-y) {};
            node[box] at (x,y) {};
            else
            node[box,fill=none] at (x,y) {};
            fi
            }
            end{tikzpicture}
            caption{}
            &
            begin{tikzpicture}[baseline=(current bounding box.south),
            node distance = 0mm,
            box/.style = {draw, minimum size=10mm, fill=black,
            outer sep=0pt},
            ]
            edefsize{2}
            foreach y in {0,...,size}
            foreach x in {0,...,size}
            {ifnumx=y
            node[box] at (x,size-y) {};
            node[box] at (x,y) {};
            else
            node[box,fill=none] at (x,y) {};
            fi
            }
            end{tikzpicture}
            caption{}
            end{tabularx}
            end{figure}
            end{document}


            enter image description here






            share|improve this answer
















            With tikz:



            documentclass[tikz]{standalone}

            begin{document}
            begin{tikzpicture}[
            node distance = 0mm,
            box/.style = {draw, minimum size=10mm, fill=black,
            outer sep=0pt},
            ]
            edefsize{4}
            foreach y in {0,...,size}
            foreach x in {0,...,size}
            {ifnumx=y
            node[box] at (x,size-y) {};
            node[box] at (x,y) {};
            else
            node[box,fill=none] at (x,y) {};
            fi
            }
            end{tikzpicture}
            end{document}


            enter image description here



            Note: Value of size had to be zero or any even natural number (0, 2, 4, ...)



            addendum:




            • default baseline of above image is as (current bounding box.south)˙ For series of those images for different value ofsize` is:


            documentclass{article}
            usepackage{tikz}
            usepackage{tabularx}
            newcolumntype{C}{>{centeringarraybackslash}X}

            begin{document}
            begin{figure}
            begin{tabularx}{linewidth}{>{hsize=0.5hsize}C C >{hsize=1.5hsize}C}
            begin{tikzpicture}[baseline=(current bounding box.south),
            node distance = 0mm,
            box/.style = {draw, minimum size=10mm, fill=black,
            outer sep=0pt},
            ]
            edefsize{0} % in this MWE the meaning of `size` is changed
            foreach y in {0,...,size}
            foreach x in {0,...,size}
            {ifnumx=y
            node[box] at (x,size-y) {};
            node[box] at (x,y) {};
            else
            node[box,fill=none] at (x,y) {};
            fi
            }
            end{tikzpicture}
            caption{}
            &
            begin{tikzpicture}[%baseline=(current bounding box.south),
            node distance = 0mm,
            box/.style = {draw, minimum size=10mm, fill=black,
            outer sep=0pt},
            ]
            edefsize{1}
            foreach y in {0,...,2*size} % changed, now number of boxes is odd
            foreach x in {0,...,2*size} % changed,
            {ifnumx=y
            node[box] at (x,size-y) {};
            node[box] at (x,y) {};
            else
            node[box,fill=none] at (x,y) {};
            fi
            }
            end{tikzpicture}
            caption{}
            &
            begin{tikzpicture}[baseline=(current bounding box.south),
            node distance = 0mm,
            box/.style = {draw, minimum size=10mm, fill=black,
            outer sep=0pt},
            ]
            edefsize{2}
            foreach y in {0,...,size}
            foreach x in {0,...,size}
            {ifnumx=y
            node[box] at (x,size-y) {};
            node[box] at (x,y) {};
            else
            node[box,fill=none] at (x,y) {};
            fi
            }
            end{tikzpicture}
            caption{}
            end{tabularx}
            end{figure}
            end{document}


            enter image description here







            share|improve this answer















            share|improve this answer




            share|improve this answer



            share|improve this answer








            edited May 27 at 18:04

























            answered May 27 at 15:01









            ZarkoZarko

            149k8 gold badges85 silver badges196 bronze badges




            149k8 gold badges85 silver badges196 bronze badges
















            • How can this produce the correct case with only one black box?

              – N3buchadnezzar
              May 27 at 15:33











            • With edefsize{1}? I'm not sure if I understood your comment correctly.

              – Zarko
              May 27 at 15:36











            • size{1} produces 4 black squares not 1. Here is how it looks for n=1 and n=2, not the same baseheight either. i.imgur.com/0OamEbM.png

              – N3buchadnezzar
              May 27 at 15:37













            • Indeed. It should be size{0}.

              – Zarko
              May 27 at 15:41






            • 1





              @N3buchadnezzar, images are aligned to their bottom side. also see "Note" in edited answer.

              – Zarko
              May 27 at 16:06





















            • How can this produce the correct case with only one black box?

              – N3buchadnezzar
              May 27 at 15:33











            • With edefsize{1}? I'm not sure if I understood your comment correctly.

              – Zarko
              May 27 at 15:36











            • size{1} produces 4 black squares not 1. Here is how it looks for n=1 and n=2, not the same baseheight either. i.imgur.com/0OamEbM.png

              – N3buchadnezzar
              May 27 at 15:37













            • Indeed. It should be size{0}.

              – Zarko
              May 27 at 15:41






            • 1





              @N3buchadnezzar, images are aligned to their bottom side. also see "Note" in edited answer.

              – Zarko
              May 27 at 16:06



















            How can this produce the correct case with only one black box?

            – N3buchadnezzar
            May 27 at 15:33





            How can this produce the correct case with only one black box?

            – N3buchadnezzar
            May 27 at 15:33













            With edefsize{1}? I'm not sure if I understood your comment correctly.

            – Zarko
            May 27 at 15:36





            With edefsize{1}? I'm not sure if I understood your comment correctly.

            – Zarko
            May 27 at 15:36













            size{1} produces 4 black squares not 1. Here is how it looks for n=1 and n=2, not the same baseheight either. i.imgur.com/0OamEbM.png

            – N3buchadnezzar
            May 27 at 15:37







            size{1} produces 4 black squares not 1. Here is how it looks for n=1 and n=2, not the same baseheight either. i.imgur.com/0OamEbM.png

            – N3buchadnezzar
            May 27 at 15:37















            Indeed. It should be size{0}.

            – Zarko
            May 27 at 15:41





            Indeed. It should be size{0}.

            – Zarko
            May 27 at 15:41




            1




            1





            @N3buchadnezzar, images are aligned to their bottom side. also see "Note" in edited answer.

            – Zarko
            May 27 at 16:06







            @N3buchadnezzar, images are aligned to their bottom side. also see "Note" in edited answer.

            – Zarko
            May 27 at 16:06















            10


















            A PSTricks solution only for fun purposes!



            enter image description here



            documentclass[border=1pt]{standalone}
            usepackage{pstricks}
            defobj#1{%
            pspicture[dimen=m](#1,#1)
            multips(0,0)(0,1){#1}{multips(0,0)(1,0){#1}{psframe(1,1)}}
            multips(0,0)(1,1){#1}{psframe*(1,1)}
            multips(0,#1)(1,-1){#1}{psframe*(1,-1)}
            endpspicture}

            begin{document}
            foreach i in {3,5,7}{obj{i}quad}
            end{document}


            Edit



            I invented the algorithm (that has not been patented yet) as follows. No nested loop is needed.



            enter image description here



            documentclass[border=12pt]{standalone}
            usepackage[nomessages]{fp}
            usepackage{xintexpr}
            usepackage{pstricks}
            psset{unit=5mm}
            defobj#1{%
            pspicture[dimen=m](#1,#1)
            FPevalN{#1*#1-1}
            foreach j in {0,...,N}
            {
            FPevaly{trunc(j/#1:0)}
            FPevalx{j-#1*y}
            xintifboolexpr{x=y||(x+y)=(#1-1)}
            {psframe[fillstyle=solid,fillcolor=black](x,y)(+x+1,y+1)}
            {psframe(x,y)(+x+1,y+1)}
            }
            endpspicture}
            begin{document}
            foreach i in {1,3,5,7,9}{obj{i}quad}
            end{document}





            share|improve this answer





























            • One downvote detected...

              – Artificial Stupidity
              May 27 at 14:31











            • Accessing 2 dimensional arrays with a single-indexed pointer is much faster.

              – Artificial Stupidity
              May 27 at 17:04


















            10


















            A PSTricks solution only for fun purposes!



            enter image description here



            documentclass[border=1pt]{standalone}
            usepackage{pstricks}
            defobj#1{%
            pspicture[dimen=m](#1,#1)
            multips(0,0)(0,1){#1}{multips(0,0)(1,0){#1}{psframe(1,1)}}
            multips(0,0)(1,1){#1}{psframe*(1,1)}
            multips(0,#1)(1,-1){#1}{psframe*(1,-1)}
            endpspicture}

            begin{document}
            foreach i in {3,5,7}{obj{i}quad}
            end{document}


            Edit



            I invented the algorithm (that has not been patented yet) as follows. No nested loop is needed.



            enter image description here



            documentclass[border=12pt]{standalone}
            usepackage[nomessages]{fp}
            usepackage{xintexpr}
            usepackage{pstricks}
            psset{unit=5mm}
            defobj#1{%
            pspicture[dimen=m](#1,#1)
            FPevalN{#1*#1-1}
            foreach j in {0,...,N}
            {
            FPevaly{trunc(j/#1:0)}
            FPevalx{j-#1*y}
            xintifboolexpr{x=y||(x+y)=(#1-1)}
            {psframe[fillstyle=solid,fillcolor=black](x,y)(+x+1,y+1)}
            {psframe(x,y)(+x+1,y+1)}
            }
            endpspicture}
            begin{document}
            foreach i in {1,3,5,7,9}{obj{i}quad}
            end{document}





            share|improve this answer





























            • One downvote detected...

              – Artificial Stupidity
              May 27 at 14:31











            • Accessing 2 dimensional arrays with a single-indexed pointer is much faster.

              – Artificial Stupidity
              May 27 at 17:04
















            10














            10










            10









            A PSTricks solution only for fun purposes!



            enter image description here



            documentclass[border=1pt]{standalone}
            usepackage{pstricks}
            defobj#1{%
            pspicture[dimen=m](#1,#1)
            multips(0,0)(0,1){#1}{multips(0,0)(1,0){#1}{psframe(1,1)}}
            multips(0,0)(1,1){#1}{psframe*(1,1)}
            multips(0,#1)(1,-1){#1}{psframe*(1,-1)}
            endpspicture}

            begin{document}
            foreach i in {3,5,7}{obj{i}quad}
            end{document}


            Edit



            I invented the algorithm (that has not been patented yet) as follows. No nested loop is needed.



            enter image description here



            documentclass[border=12pt]{standalone}
            usepackage[nomessages]{fp}
            usepackage{xintexpr}
            usepackage{pstricks}
            psset{unit=5mm}
            defobj#1{%
            pspicture[dimen=m](#1,#1)
            FPevalN{#1*#1-1}
            foreach j in {0,...,N}
            {
            FPevaly{trunc(j/#1:0)}
            FPevalx{j-#1*y}
            xintifboolexpr{x=y||(x+y)=(#1-1)}
            {psframe[fillstyle=solid,fillcolor=black](x,y)(+x+1,y+1)}
            {psframe(x,y)(+x+1,y+1)}
            }
            endpspicture}
            begin{document}
            foreach i in {1,3,5,7,9}{obj{i}quad}
            end{document}





            share|improve this answer
















            A PSTricks solution only for fun purposes!



            enter image description here



            documentclass[border=1pt]{standalone}
            usepackage{pstricks}
            defobj#1{%
            pspicture[dimen=m](#1,#1)
            multips(0,0)(0,1){#1}{multips(0,0)(1,0){#1}{psframe(1,1)}}
            multips(0,0)(1,1){#1}{psframe*(1,1)}
            multips(0,#1)(1,-1){#1}{psframe*(1,-1)}
            endpspicture}

            begin{document}
            foreach i in {3,5,7}{obj{i}quad}
            end{document}


            Edit



            I invented the algorithm (that has not been patented yet) as follows. No nested loop is needed.



            enter image description here



            documentclass[border=12pt]{standalone}
            usepackage[nomessages]{fp}
            usepackage{xintexpr}
            usepackage{pstricks}
            psset{unit=5mm}
            defobj#1{%
            pspicture[dimen=m](#1,#1)
            FPevalN{#1*#1-1}
            foreach j in {0,...,N}
            {
            FPevaly{trunc(j/#1:0)}
            FPevalx{j-#1*y}
            xintifboolexpr{x=y||(x+y)=(#1-1)}
            {psframe[fillstyle=solid,fillcolor=black](x,y)(+x+1,y+1)}
            {psframe(x,y)(+x+1,y+1)}
            }
            endpspicture}
            begin{document}
            foreach i in {1,3,5,7,9}{obj{i}quad}
            end{document}






            share|improve this answer















            share|improve this answer




            share|improve this answer



            share|improve this answer








            edited May 27 at 16:55

























            answered May 27 at 14:23









            Artificial StupidityArtificial Stupidity

            6,2861 gold badge14 silver badges50 bronze badges




            6,2861 gold badge14 silver badges50 bronze badges
















            • One downvote detected...

              – Artificial Stupidity
              May 27 at 14:31











            • Accessing 2 dimensional arrays with a single-indexed pointer is much faster.

              – Artificial Stupidity
              May 27 at 17:04





















            • One downvote detected...

              – Artificial Stupidity
              May 27 at 14:31











            • Accessing 2 dimensional arrays with a single-indexed pointer is much faster.

              – Artificial Stupidity
              May 27 at 17:04



















            One downvote detected...

            – Artificial Stupidity
            May 27 at 14:31





            One downvote detected...

            – Artificial Stupidity
            May 27 at 14:31













            Accessing 2 dimensional arrays with a single-indexed pointer is much faster.

            – Artificial Stupidity
            May 27 at 17:04







            Accessing 2 dimensional arrays with a single-indexed pointer is much faster.

            – Artificial Stupidity
            May 27 at 17:04













            9


















            Edit:
            The following works for all values of size



            documentclass[tikz]{standalone}

            begin{document}

            begin{tikzpicture}
            edefsize{4}
            foreach x in {0,...,size} foreach y in {0,...,size} {
            pgfmathsetmacro{colour}{(x==y || x+y==size) ? "black" : "none"}
            draw[fill=colour] (x,y) rectangle ++ (1,1);
            }
            end{tikzpicture}

            end{document}


            enter image description here






            share|improve this answer





























            • How can this produce the correct case with only one black box?

              – N3buchadnezzar
              May 27 at 15:33











            • The mod function was not a good choice, pgfmathparse{x+y==size ? "black" : "colour"} is better.

              – AboAmmar
              May 27 at 17:00


















            9


















            Edit:
            The following works for all values of size



            documentclass[tikz]{standalone}

            begin{document}

            begin{tikzpicture}
            edefsize{4}
            foreach x in {0,...,size} foreach y in {0,...,size} {
            pgfmathsetmacro{colour}{(x==y || x+y==size) ? "black" : "none"}
            draw[fill=colour] (x,y) rectangle ++ (1,1);
            }
            end{tikzpicture}

            end{document}


            enter image description here






            share|improve this answer





























            • How can this produce the correct case with only one black box?

              – N3buchadnezzar
              May 27 at 15:33











            • The mod function was not a good choice, pgfmathparse{x+y==size ? "black" : "colour"} is better.

              – AboAmmar
              May 27 at 17:00
















            9














            9










            9









            Edit:
            The following works for all values of size



            documentclass[tikz]{standalone}

            begin{document}

            begin{tikzpicture}
            edefsize{4}
            foreach x in {0,...,size} foreach y in {0,...,size} {
            pgfmathsetmacro{colour}{(x==y || x+y==size) ? "black" : "none"}
            draw[fill=colour] (x,y) rectangle ++ (1,1);
            }
            end{tikzpicture}

            end{document}


            enter image description here






            share|improve this answer
















            Edit:
            The following works for all values of size



            documentclass[tikz]{standalone}

            begin{document}

            begin{tikzpicture}
            edefsize{4}
            foreach x in {0,...,size} foreach y in {0,...,size} {
            pgfmathsetmacro{colour}{(x==y || x+y==size) ? "black" : "none"}
            draw[fill=colour] (x,y) rectangle ++ (1,1);
            }
            end{tikzpicture}

            end{document}


            enter image description here







            share|improve this answer















            share|improve this answer




            share|improve this answer



            share|improve this answer








            edited May 27 at 17:45

























            answered May 27 at 14:50









            AboAmmarAboAmmar

            37.1k3 gold badges31 silver badges91 bronze badges




            37.1k3 gold badges31 silver badges91 bronze badges
















            • How can this produce the correct case with only one black box?

              – N3buchadnezzar
              May 27 at 15:33











            • The mod function was not a good choice, pgfmathparse{x+y==size ? "black" : "colour"} is better.

              – AboAmmar
              May 27 at 17:00





















            • How can this produce the correct case with only one black box?

              – N3buchadnezzar
              May 27 at 15:33











            • The mod function was not a good choice, pgfmathparse{x+y==size ? "black" : "colour"} is better.

              – AboAmmar
              May 27 at 17:00



















            How can this produce the correct case with only one black box?

            – N3buchadnezzar
            May 27 at 15:33





            How can this produce the correct case with only one black box?

            – N3buchadnezzar
            May 27 at 15:33













            The mod function was not a good choice, pgfmathparse{x+y==size ? "black" : "colour"} is better.

            – AboAmmar
            May 27 at 17:00







            The mod function was not a good choice, pgfmathparse{x+y==size ? "black" : "colour"} is better.

            – AboAmmar
            May 27 at 17:00













            1


















            I do not see the reason for a double loop, nor complicated conditions.



            documentclass[tikz,border=3.14mm]{standalone}
            begin{document}
            begin{tikzpicture}[xboard/.style={insert path={
            (0,0) grid (#1,#1)
            foreach X in {1,...,#1}
            {(X-0.5,X-0.5) pic{bx} (X-0.5,#1-X+0.5) pic{bx}}}},
            pics/bx/.style={code={fill (-0.5,-0.5) rectangle (0.5,0.5);}}]
            draw[xboard=1] [xshift=2cm,xboard=3]
            [xshift=4cm,xboard=5] [xshift=6cm,xboard=7];
            end{tikzpicture}
            end{document}


            enter image description here






            share|improve this answer































              1


















              I do not see the reason for a double loop, nor complicated conditions.



              documentclass[tikz,border=3.14mm]{standalone}
              begin{document}
              begin{tikzpicture}[xboard/.style={insert path={
              (0,0) grid (#1,#1)
              foreach X in {1,...,#1}
              {(X-0.5,X-0.5) pic{bx} (X-0.5,#1-X+0.5) pic{bx}}}},
              pics/bx/.style={code={fill (-0.5,-0.5) rectangle (0.5,0.5);}}]
              draw[xboard=1] [xshift=2cm,xboard=3]
              [xshift=4cm,xboard=5] [xshift=6cm,xboard=7];
              end{tikzpicture}
              end{document}


              enter image description here






              share|improve this answer





























                1














                1










                1









                I do not see the reason for a double loop, nor complicated conditions.



                documentclass[tikz,border=3.14mm]{standalone}
                begin{document}
                begin{tikzpicture}[xboard/.style={insert path={
                (0,0) grid (#1,#1)
                foreach X in {1,...,#1}
                {(X-0.5,X-0.5) pic{bx} (X-0.5,#1-X+0.5) pic{bx}}}},
                pics/bx/.style={code={fill (-0.5,-0.5) rectangle (0.5,0.5);}}]
                draw[xboard=1] [xshift=2cm,xboard=3]
                [xshift=4cm,xboard=5] [xshift=6cm,xboard=7];
                end{tikzpicture}
                end{document}


                enter image description here






                share|improve this answer














                I do not see the reason for a double loop, nor complicated conditions.



                documentclass[tikz,border=3.14mm]{standalone}
                begin{document}
                begin{tikzpicture}[xboard/.style={insert path={
                (0,0) grid (#1,#1)
                foreach X in {1,...,#1}
                {(X-0.5,X-0.5) pic{bx} (X-0.5,#1-X+0.5) pic{bx}}}},
                pics/bx/.style={code={fill (-0.5,-0.5) rectangle (0.5,0.5);}}]
                draw[xboard=1] [xshift=2cm,xboard=3]
                [xshift=4cm,xboard=5] [xshift=6cm,xboard=7];
                end{tikzpicture}
                end{document}


                enter image description here







                share|improve this answer













                share|improve this answer




                share|improve this answer



                share|improve this answer










                answered May 28 at 3:26







                user121799









































                    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%2f492863%2fdraw-a-checker-pattern-with-a-black-x-in-the-center%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

                    He _____ here since 1970 . Answer needed [closed]What does “since he was so high” mean?Meaning of “catch birds for”?How do I ensure “since” takes the meaning I want?“Who cares here” meaningWhat does “right round toward” mean?the time tense (had now been detected)What does the phrase “ring around the roses” mean here?Correct usage of “visited upon”Meaning of “foiled rail sabotage bid”It was the third time I had gone to Rome or It is the third time I had been to Rome

                    Bunad

                    Færeyskur hestur Heimild | Tengill | Tilvísanir | LeiðsagnarvalRossið - síða um færeyska hrossið á færeyskuGott ár hjá færeyska hestinum