Draw a checker pattern with a black X in the centerRotate a node but not its content: the case of the ellipse decorationHow to define the default vertical distance between nodes?Numerical conditional within tikz keys?Input/Output Nodes - Specification and Description LanguageDrawing a flag in Tikz!TikZ: Drawing an arc from an intersection to an intersectionDrawing rectilinear curves in Tikz, aka an Etch-a-Sketch drawingClose scope for global options in a tikz-pgf pathHow can I define a key that adds a coloured border inside a closed path, but plays nice with fill?Line up nested tikz enviroments or how to get rid of them
Professor Roman loves to teach unorthodox Chemistry
How (un)safe is it to ride barefoot?
What exactly "triggers an additional time" in the interaction between Afterlife and Teysa Karlov?
Do Veracrypt encrypted volumes have any kind of brute force protection?
What is the STRONGEST end-of-line knot to use if you want to use a steel-thimble at the end, so that you've got a steel-eyelet at the end of the line?
one-hot-encoding categorical data gives error
How does AFV select the winning videos?
What does "lit." mean in boiling point or melting point specification?
Was self-modifying code possible using BASIC?
Realistic, logical way for men with medieval-era weaponry to compete with much larger and physically stronger foes
Find all letter Combinations of a Phone Number
Why does there seem to be an extreme lack of public trashcans in Taiwan?
A life of PhD: is it feasible?
Are regulatory compliance checks performed within the EU bloc?
Who is "He that flies" in Lord of the Rings?
How can you estimate a spike story?
Why is long-term living in Almost-Earth causing severe health problems?
What is Gilligan's full Name?
Is Lambda Calculus purely syntactic?
How do I make a Magical Dart Thrower more economical in Adventurers League?
How to Handle Many Times Series Simultaneously?
Why does plot not show where Piecewise function is not zero?
What is the theme of analysis?
How to befriend someone who doesn't like to talk?
Draw a checker pattern with a black X in the center
Rotate a node but not its content: the case of the ellipse decorationHow to define the default vertical distance between nodes?Numerical conditional within tikz keys?Input/Output Nodes - Specification and Description LanguageDrawing a flag in Tikz!TikZ: Drawing an arc from an intersection to an intersectionDrawing rectilinear curves in Tikz, aka an Etch-a-Sketch drawingClose scope for global options in a tikz-pgf pathHow can I define a key that adds a coloured border inside a closed path, but plays nice with fill?Line up nested tikz enviroments or how to get rid of them
I am trying to recreate the following image in TikZ

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

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
begindocument
begintikzpicture[x=1cm]
edefsize4
foreach x in 0,...,size foreach y in 0,...,size
pgfmathparsemod(x+y,size) ? "none" : "black"
edefcolourpgfmathresult
path[draw=black, fill=colour] (x,y) rectangle ++ (1,1);
pgfmathparsex==y ? "black" : "none"
edefcolourpgfmathresult
path[fill=colour] (x,y) rectangle ++ (1,1);
draw (0,0)--(0,size+1)--(size+1,size+1)--(size+1,0)--cycle;
endtikzpicture
enddocument
tikz-pgf code-review
add a comment |
I am trying to recreate the following image in TikZ

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

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
begindocument
begintikzpicture[x=1cm]
edefsize4
foreach x in 0,...,size foreach y in 0,...,size
pgfmathparsemod(x+y,size) ? "none" : "black"
edefcolourpgfmathresult
path[draw=black, fill=colour] (x,y) rectangle ++ (1,1);
pgfmathparsex==y ? "black" : "none"
edefcolourpgfmathresult
path[fill=colour] (x,y) rectangle ++ (1,1);
draw (0,0)--(0,size+1)--(size+1,size+1)--(size+1,0)--cycle;
endtikzpicture
enddocument
tikz-pgf code-review
add a comment |
I am trying to recreate the following image in TikZ

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

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
begindocument
begintikzpicture[x=1cm]
edefsize4
foreach x in 0,...,size foreach y in 0,...,size
pgfmathparsemod(x+y,size) ? "none" : "black"
edefcolourpgfmathresult
path[draw=black, fill=colour] (x,y) rectangle ++ (1,1);
pgfmathparsex==y ? "black" : "none"
edefcolourpgfmathresult
path[fill=colour] (x,y) rectangle ++ (1,1);
draw (0,0)--(0,size+1)--(size+1,size+1)--(size+1,0)--cycle;
endtikzpicture
enddocument
tikz-pgf code-review
I am trying to recreate the following image in TikZ

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

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
begindocument
begintikzpicture[x=1cm]
edefsize4
foreach x in 0,...,size foreach y in 0,...,size
pgfmathparsemod(x+y,size) ? "none" : "black"
edefcolourpgfmathresult
path[draw=black, fill=colour] (x,y) rectangle ++ (1,1);
pgfmathparsex==y ? "black" : "none"
edefcolourpgfmathresult
path[fill=colour] (x,y) rectangle ++ (1,1);
draw (0,0)--(0,size+1)--(size+1,size+1)--(size+1,0)--cycle;
endtikzpicture
enddocument
tikz-pgf code-review
tikz-pgf code-review
edited May 28 at 4:14
Community♦
1
1
asked May 27 at 14:00
N3buchadnezzarN3buchadnezzar
4,28954191
4,28954191
add a comment |
add a comment |
4 Answers
4
active
oldest
votes
With tikz:
documentclass[tikz]standalone
begindocument
begintikzpicture[
node distance = 0mm,
box/.style = draw, minimum size=10mm, fill=black,
outer sep=0pt,
]
edefsize4
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
endtikzpicture
enddocument

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:
documentclassarticle
usepackagetikz
usepackagetabularx
newcolumntypeC>centeringarraybackslashX
begindocument
beginfigure
begintabularxlinewidth>hsize=0.5hsizeC C >hsize=1.5hsizeC
begintikzpicture[baseline=(current bounding box.south),
node distance = 0mm,
box/.style = draw, minimum size=10mm, fill=black,
outer sep=0pt,
]
edefsize0 % 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
endtikzpicture
caption
&
begintikzpicture[%baseline=(current bounding box.south),
node distance = 0mm,
box/.style = draw, minimum size=10mm, fill=black,
outer sep=0pt,
]
edefsize1
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
endtikzpicture
caption
&
begintikzpicture[baseline=(current bounding box.south),
node distance = 0mm,
box/.style = draw, minimum size=10mm, fill=black,
outer sep=0pt,
]
edefsize2
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
endtikzpicture
caption
endtabularx
endfigure
enddocument

How can this produce the correct case with only one black box?
– N3buchadnezzar
May 27 at 15:33
Withedefsize1? I'm not sure if I understood your comment correctly.
– Zarko
May 27 at 15:36
size1produces 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 besize0.
– 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
|
show 1 more comment
A PSTricks solution only for fun purposes!

documentclass[border=1pt]standalone
usepackagepstricks
defobj#1%
pspicture[dimen=m](#1,#1)
multips(0,0)(0,1)#1multips(0,0)(1,0)#1psframe(1,1)
multips(0,0)(1,1)#1psframe*(1,1)
multips(0,#1)(1,-1)#1psframe*(1,-1)
endpspicture
begindocument
foreach i in 3,5,7objiquad
enddocument
Edit
I invented the algorithm (that has not been patented yet) as follows. No nested loop is needed.

documentclass[border=12pt]standalone
usepackage[nomessages]fp
usepackagexintexpr
usepackagepstricks
pssetunit=5mm
defobj#1%
pspicture[dimen=m](#1,#1)
FPevalN#1*#1-1
foreach j in 0,...,N
FPevalytrunc(j/#1:0)
FPevalxj-#1*y
xintifboolexpr
psframe[fillstyle=solid,fillcolor=black](x,y)(+x+1,y+1)
psframe(x,y)(+x+1,y+1)
endpspicture
begindocument
foreach i in 1,3,5,7,9objiquad
enddocument
One downvote detected...
– Money Oriented Programmer
May 27 at 14:31
Accessing 2 dimensional arrays with a single-indexed pointer is much faster.
– Money Oriented Programmer
May 27 at 17:04
add a comment |
Edit:
The following works for all values of size
documentclass[tikz]standalone
begindocument
begintikzpicture
edefsize4
foreach x in 0,...,size foreach y in 0,...,size
pgfmathsetmacrocolour(x==y
draw[fill=colour] (x,y) rectangle ++ (1,1);
endtikzpicture
enddocument

How can this produce the correct case with only one black box?
– N3buchadnezzar
May 27 at 15:33
Themodfunction was not a good choice,pgfmathparsex+y==size ? "black" : "colour"is better.
– AboAmmar
May 27 at 17:00
add a comment |
I do not see the reason for a double loop, nor complicated conditions.
documentclass[tikz,border=3.14mm]standalone
begindocument
begintikzpicture[xboard/.style=insert path=
(0,0) grid (#1,#1)
foreach X in 1,...,#1
(X-0.5,X-0.5) picbx (X-0.5,#1-X+0.5) picbx,
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];
endtikzpicture
enddocument

add a comment |
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
With tikz:
documentclass[tikz]standalone
begindocument
begintikzpicture[
node distance = 0mm,
box/.style = draw, minimum size=10mm, fill=black,
outer sep=0pt,
]
edefsize4
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
endtikzpicture
enddocument

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:
documentclassarticle
usepackagetikz
usepackagetabularx
newcolumntypeC>centeringarraybackslashX
begindocument
beginfigure
begintabularxlinewidth>hsize=0.5hsizeC C >hsize=1.5hsizeC
begintikzpicture[baseline=(current bounding box.south),
node distance = 0mm,
box/.style = draw, minimum size=10mm, fill=black,
outer sep=0pt,
]
edefsize0 % 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
endtikzpicture
caption
&
begintikzpicture[%baseline=(current bounding box.south),
node distance = 0mm,
box/.style = draw, minimum size=10mm, fill=black,
outer sep=0pt,
]
edefsize1
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
endtikzpicture
caption
&
begintikzpicture[baseline=(current bounding box.south),
node distance = 0mm,
box/.style = draw, minimum size=10mm, fill=black,
outer sep=0pt,
]
edefsize2
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
endtikzpicture
caption
endtabularx
endfigure
enddocument

How can this produce the correct case with only one black box?
– N3buchadnezzar
May 27 at 15:33
Withedefsize1? I'm not sure if I understood your comment correctly.
– Zarko
May 27 at 15:36
size1produces 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 besize0.
– 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
|
show 1 more comment
With tikz:
documentclass[tikz]standalone
begindocument
begintikzpicture[
node distance = 0mm,
box/.style = draw, minimum size=10mm, fill=black,
outer sep=0pt,
]
edefsize4
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
endtikzpicture
enddocument

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:
documentclassarticle
usepackagetikz
usepackagetabularx
newcolumntypeC>centeringarraybackslashX
begindocument
beginfigure
begintabularxlinewidth>hsize=0.5hsizeC C >hsize=1.5hsizeC
begintikzpicture[baseline=(current bounding box.south),
node distance = 0mm,
box/.style = draw, minimum size=10mm, fill=black,
outer sep=0pt,
]
edefsize0 % 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
endtikzpicture
caption
&
begintikzpicture[%baseline=(current bounding box.south),
node distance = 0mm,
box/.style = draw, minimum size=10mm, fill=black,
outer sep=0pt,
]
edefsize1
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
endtikzpicture
caption
&
begintikzpicture[baseline=(current bounding box.south),
node distance = 0mm,
box/.style = draw, minimum size=10mm, fill=black,
outer sep=0pt,
]
edefsize2
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
endtikzpicture
caption
endtabularx
endfigure
enddocument

How can this produce the correct case with only one black box?
– N3buchadnezzar
May 27 at 15:33
Withedefsize1? I'm not sure if I understood your comment correctly.
– Zarko
May 27 at 15:36
size1produces 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 besize0.
– 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
|
show 1 more comment
With tikz:
documentclass[tikz]standalone
begindocument
begintikzpicture[
node distance = 0mm,
box/.style = draw, minimum size=10mm, fill=black,
outer sep=0pt,
]
edefsize4
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
endtikzpicture
enddocument

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:
documentclassarticle
usepackagetikz
usepackagetabularx
newcolumntypeC>centeringarraybackslashX
begindocument
beginfigure
begintabularxlinewidth>hsize=0.5hsizeC C >hsize=1.5hsizeC
begintikzpicture[baseline=(current bounding box.south),
node distance = 0mm,
box/.style = draw, minimum size=10mm, fill=black,
outer sep=0pt,
]
edefsize0 % 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
endtikzpicture
caption
&
begintikzpicture[%baseline=(current bounding box.south),
node distance = 0mm,
box/.style = draw, minimum size=10mm, fill=black,
outer sep=0pt,
]
edefsize1
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
endtikzpicture
caption
&
begintikzpicture[baseline=(current bounding box.south),
node distance = 0mm,
box/.style = draw, minimum size=10mm, fill=black,
outer sep=0pt,
]
edefsize2
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
endtikzpicture
caption
endtabularx
endfigure
enddocument

With tikz:
documentclass[tikz]standalone
begindocument
begintikzpicture[
node distance = 0mm,
box/.style = draw, minimum size=10mm, fill=black,
outer sep=0pt,
]
edefsize4
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
endtikzpicture
enddocument

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:
documentclassarticle
usepackagetikz
usepackagetabularx
newcolumntypeC>centeringarraybackslashX
begindocument
beginfigure
begintabularxlinewidth>hsize=0.5hsizeC C >hsize=1.5hsizeC
begintikzpicture[baseline=(current bounding box.south),
node distance = 0mm,
box/.style = draw, minimum size=10mm, fill=black,
outer sep=0pt,
]
edefsize0 % 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
endtikzpicture
caption
&
begintikzpicture[%baseline=(current bounding box.south),
node distance = 0mm,
box/.style = draw, minimum size=10mm, fill=black,
outer sep=0pt,
]
edefsize1
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
endtikzpicture
caption
&
begintikzpicture[baseline=(current bounding box.south),
node distance = 0mm,
box/.style = draw, minimum size=10mm, fill=black,
outer sep=0pt,
]
edefsize2
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
endtikzpicture
caption
endtabularx
endfigure
enddocument

edited May 27 at 18:04
answered May 27 at 15:01
ZarkoZarko
137k872180
137k872180
How can this produce the correct case with only one black box?
– N3buchadnezzar
May 27 at 15:33
Withedefsize1? I'm not sure if I understood your comment correctly.
– Zarko
May 27 at 15:36
size1produces 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 besize0.
– 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
|
show 1 more comment
How can this produce the correct case with only one black box?
– N3buchadnezzar
May 27 at 15:33
Withedefsize1? I'm not sure if I understood your comment correctly.
– Zarko
May 27 at 15:36
size1produces 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 besize0.
– 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
edefsize1? I'm not sure if I understood your comment correctly.– Zarko
May 27 at 15:36
With
edefsize1? I'm not sure if I understood your comment correctly.– Zarko
May 27 at 15:36
size1 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
size1 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
size0.– Zarko
May 27 at 15:41
Indeed. It should be
size0.– 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
|
show 1 more comment
A PSTricks solution only for fun purposes!

documentclass[border=1pt]standalone
usepackagepstricks
defobj#1%
pspicture[dimen=m](#1,#1)
multips(0,0)(0,1)#1multips(0,0)(1,0)#1psframe(1,1)
multips(0,0)(1,1)#1psframe*(1,1)
multips(0,#1)(1,-1)#1psframe*(1,-1)
endpspicture
begindocument
foreach i in 3,5,7objiquad
enddocument
Edit
I invented the algorithm (that has not been patented yet) as follows. No nested loop is needed.

documentclass[border=12pt]standalone
usepackage[nomessages]fp
usepackagexintexpr
usepackagepstricks
pssetunit=5mm
defobj#1%
pspicture[dimen=m](#1,#1)
FPevalN#1*#1-1
foreach j in 0,...,N
FPevalytrunc(j/#1:0)
FPevalxj-#1*y
xintifboolexpr
psframe[fillstyle=solid,fillcolor=black](x,y)(+x+1,y+1)
psframe(x,y)(+x+1,y+1)
endpspicture
begindocument
foreach i in 1,3,5,7,9objiquad
enddocument
One downvote detected...
– Money Oriented Programmer
May 27 at 14:31
Accessing 2 dimensional arrays with a single-indexed pointer is much faster.
– Money Oriented Programmer
May 27 at 17:04
add a comment |
A PSTricks solution only for fun purposes!

documentclass[border=1pt]standalone
usepackagepstricks
defobj#1%
pspicture[dimen=m](#1,#1)
multips(0,0)(0,1)#1multips(0,0)(1,0)#1psframe(1,1)
multips(0,0)(1,1)#1psframe*(1,1)
multips(0,#1)(1,-1)#1psframe*(1,-1)
endpspicture
begindocument
foreach i in 3,5,7objiquad
enddocument
Edit
I invented the algorithm (that has not been patented yet) as follows. No nested loop is needed.

documentclass[border=12pt]standalone
usepackage[nomessages]fp
usepackagexintexpr
usepackagepstricks
pssetunit=5mm
defobj#1%
pspicture[dimen=m](#1,#1)
FPevalN#1*#1-1
foreach j in 0,...,N
FPevalytrunc(j/#1:0)
FPevalxj-#1*y
xintifboolexpr
psframe[fillstyle=solid,fillcolor=black](x,y)(+x+1,y+1)
psframe(x,y)(+x+1,y+1)
endpspicture
begindocument
foreach i in 1,3,5,7,9objiquad
enddocument
One downvote detected...
– Money Oriented Programmer
May 27 at 14:31
Accessing 2 dimensional arrays with a single-indexed pointer is much faster.
– Money Oriented Programmer
May 27 at 17:04
add a comment |
A PSTricks solution only for fun purposes!

documentclass[border=1pt]standalone
usepackagepstricks
defobj#1%
pspicture[dimen=m](#1,#1)
multips(0,0)(0,1)#1multips(0,0)(1,0)#1psframe(1,1)
multips(0,0)(1,1)#1psframe*(1,1)
multips(0,#1)(1,-1)#1psframe*(1,-1)
endpspicture
begindocument
foreach i in 3,5,7objiquad
enddocument
Edit
I invented the algorithm (that has not been patented yet) as follows. No nested loop is needed.

documentclass[border=12pt]standalone
usepackage[nomessages]fp
usepackagexintexpr
usepackagepstricks
pssetunit=5mm
defobj#1%
pspicture[dimen=m](#1,#1)
FPevalN#1*#1-1
foreach j in 0,...,N
FPevalytrunc(j/#1:0)
FPevalxj-#1*y
xintifboolexpr
psframe[fillstyle=solid,fillcolor=black](x,y)(+x+1,y+1)
psframe(x,y)(+x+1,y+1)
endpspicture
begindocument
foreach i in 1,3,5,7,9objiquad
enddocument
A PSTricks solution only for fun purposes!

documentclass[border=1pt]standalone
usepackagepstricks
defobj#1%
pspicture[dimen=m](#1,#1)
multips(0,0)(0,1)#1multips(0,0)(1,0)#1psframe(1,1)
multips(0,0)(1,1)#1psframe*(1,1)
multips(0,#1)(1,-1)#1psframe*(1,-1)
endpspicture
begindocument
foreach i in 3,5,7objiquad
enddocument
Edit
I invented the algorithm (that has not been patented yet) as follows. No nested loop is needed.

documentclass[border=12pt]standalone
usepackage[nomessages]fp
usepackagexintexpr
usepackagepstricks
pssetunit=5mm
defobj#1%
pspicture[dimen=m](#1,#1)
FPevalN#1*#1-1
foreach j in 0,...,N
FPevalytrunc(j/#1:0)
FPevalxj-#1*y
xintifboolexpr
psframe[fillstyle=solid,fillcolor=black](x,y)(+x+1,y+1)
psframe(x,y)(+x+1,y+1)
endpspicture
begindocument
foreach i in 1,3,5,7,9objiquad
enddocument
edited May 27 at 16:55
answered May 27 at 14:23
Money Oriented ProgrammerMoney Oriented Programmer
5,90411346
5,90411346
One downvote detected...
– Money Oriented Programmer
May 27 at 14:31
Accessing 2 dimensional arrays with a single-indexed pointer is much faster.
– Money Oriented Programmer
May 27 at 17:04
add a comment |
One downvote detected...
– Money Oriented Programmer
May 27 at 14:31
Accessing 2 dimensional arrays with a single-indexed pointer is much faster.
– Money Oriented Programmer
May 27 at 17:04
One downvote detected...
– Money Oriented Programmer
May 27 at 14:31
One downvote detected...
– Money Oriented Programmer
May 27 at 14:31
Accessing 2 dimensional arrays with a single-indexed pointer is much faster.
– Money Oriented Programmer
May 27 at 17:04
Accessing 2 dimensional arrays with a single-indexed pointer is much faster.
– Money Oriented Programmer
May 27 at 17:04
add a comment |
Edit:
The following works for all values of size
documentclass[tikz]standalone
begindocument
begintikzpicture
edefsize4
foreach x in 0,...,size foreach y in 0,...,size
pgfmathsetmacrocolour(x==y
draw[fill=colour] (x,y) rectangle ++ (1,1);
endtikzpicture
enddocument

How can this produce the correct case with only one black box?
– N3buchadnezzar
May 27 at 15:33
Themodfunction was not a good choice,pgfmathparsex+y==size ? "black" : "colour"is better.
– AboAmmar
May 27 at 17:00
add a comment |
Edit:
The following works for all values of size
documentclass[tikz]standalone
begindocument
begintikzpicture
edefsize4
foreach x in 0,...,size foreach y in 0,...,size
pgfmathsetmacrocolour(x==y
draw[fill=colour] (x,y) rectangle ++ (1,1);
endtikzpicture
enddocument

How can this produce the correct case with only one black box?
– N3buchadnezzar
May 27 at 15:33
Themodfunction was not a good choice,pgfmathparsex+y==size ? "black" : "colour"is better.
– AboAmmar
May 27 at 17:00
add a comment |
Edit:
The following works for all values of size
documentclass[tikz]standalone
begindocument
begintikzpicture
edefsize4
foreach x in 0,...,size foreach y in 0,...,size
pgfmathsetmacrocolour(x==y
draw[fill=colour] (x,y) rectangle ++ (1,1);
endtikzpicture
enddocument

Edit:
The following works for all values of size
documentclass[tikz]standalone
begindocument
begintikzpicture
edefsize4
foreach x in 0,...,size foreach y in 0,...,size
pgfmathsetmacrocolour(x==y
draw[fill=colour] (x,y) rectangle ++ (1,1);
endtikzpicture
enddocument

edited May 27 at 17:45
answered May 27 at 14:50
AboAmmarAboAmmar
35.7k32985
35.7k32985
How can this produce the correct case with only one black box?
– N3buchadnezzar
May 27 at 15:33
Themodfunction was not a good choice,pgfmathparsex+y==size ? "black" : "colour"is better.
– AboAmmar
May 27 at 17:00
add a comment |
How can this produce the correct case with only one black box?
– N3buchadnezzar
May 27 at 15:33
Themodfunction was not a good choice,pgfmathparsex+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, pgfmathparsex+y==size ? "black" : "colour" is better.– AboAmmar
May 27 at 17:00
The
mod function was not a good choice, pgfmathparsex+y==size ? "black" : "colour" is better.– AboAmmar
May 27 at 17:00
add a comment |
I do not see the reason for a double loop, nor complicated conditions.
documentclass[tikz,border=3.14mm]standalone
begindocument
begintikzpicture[xboard/.style=insert path=
(0,0) grid (#1,#1)
foreach X in 1,...,#1
(X-0.5,X-0.5) picbx (X-0.5,#1-X+0.5) picbx,
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];
endtikzpicture
enddocument

add a comment |
I do not see the reason for a double loop, nor complicated conditions.
documentclass[tikz,border=3.14mm]standalone
begindocument
begintikzpicture[xboard/.style=insert path=
(0,0) grid (#1,#1)
foreach X in 1,...,#1
(X-0.5,X-0.5) picbx (X-0.5,#1-X+0.5) picbx,
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];
endtikzpicture
enddocument

add a comment |
I do not see the reason for a double loop, nor complicated conditions.
documentclass[tikz,border=3.14mm]standalone
begindocument
begintikzpicture[xboard/.style=insert path=
(0,0) grid (#1,#1)
foreach X in 1,...,#1
(X-0.5,X-0.5) picbx (X-0.5,#1-X+0.5) picbx,
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];
endtikzpicture
enddocument

I do not see the reason for a double loop, nor complicated conditions.
documentclass[tikz,border=3.14mm]standalone
begindocument
begintikzpicture[xboard/.style=insert path=
(0,0) grid (#1,#1)
foreach X in 1,...,#1
(X-0.5,X-0.5) picbx (X-0.5,#1-X+0.5) picbx,
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];
endtikzpicture
enddocument

answered May 28 at 3:26
marmotmarmot
135k6175323
135k6175323
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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