What is wrong with the use of `isodd` of `xifthen`?
The white/black board can be drawn by testing the parity of node positions as follows:
documentclass[tikz]{standalone}
usepackage{xifthen}
begin{document}
begin{tikzpicture}[every node/.style = {draw, circle, minimum size = 10pt}]
foreach r in {1, ..., 4} {
foreach c in {1, ..., 5} {
pgfmathparse{mod(r + c, 2)}
letparitypgfmathresult
ifthenelse{equal{parity}{0.0}}
{node (rc) [fill = lightgray] at (c, r){}}
{node (rc) at (c, r){}};
}
}
end{tikzpicture}
end{document}
However, using isodd
of xifthen
does not produce the same result. What is wrong here? Or are there any alternative similar solutions?
documentclass[tikz]{standalone}
usepackage{xifthen}
begin{document}
begin{tikzpicture}[every node/.style = {draw, circle, minimum size = 10pt}]
foreach r in {1, ..., 4} {
foreach c in {1, ..., 5} {
ifthenelse{NOT isodd{r + c}}
{node (rc) [fill = lightgray] at (c, r){}}
{node (rc) at (c, r){}};
}
}
end{tikzpicture}
end{document}
nodes foreach xifthen arithmetic
add a comment |
The white/black board can be drawn by testing the parity of node positions as follows:
documentclass[tikz]{standalone}
usepackage{xifthen}
begin{document}
begin{tikzpicture}[every node/.style = {draw, circle, minimum size = 10pt}]
foreach r in {1, ..., 4} {
foreach c in {1, ..., 5} {
pgfmathparse{mod(r + c, 2)}
letparitypgfmathresult
ifthenelse{equal{parity}{0.0}}
{node (rc) [fill = lightgray] at (c, r){}}
{node (rc) at (c, r){}};
}
}
end{tikzpicture}
end{document}
However, using isodd
of xifthen
does not produce the same result. What is wrong here? Or are there any alternative similar solutions?
documentclass[tikz]{standalone}
usepackage{xifthen}
begin{document}
begin{tikzpicture}[every node/.style = {draw, circle, minimum size = 10pt}]
foreach r in {1, ..., 4} {
foreach c in {1, ..., 5} {
ifthenelse{NOT isodd{r + c}}
{node (rc) [fill = lightgray] at (c, r){}}
{node (rc) at (c, r){}};
}
}
end{tikzpicture}
end{document}
nodes foreach xifthen arithmetic
2
Can I suggest using TeX'sifodd
instead ofifthenelse
fromxifthen
? See Why is theifthen
package obsolete?
– Werner
4 hours ago
@Werner Thanks. It is also appreciated. Would you mind posting it as an answer?
– hengxin
4 hours ago
add a comment |
The white/black board can be drawn by testing the parity of node positions as follows:
documentclass[tikz]{standalone}
usepackage{xifthen}
begin{document}
begin{tikzpicture}[every node/.style = {draw, circle, minimum size = 10pt}]
foreach r in {1, ..., 4} {
foreach c in {1, ..., 5} {
pgfmathparse{mod(r + c, 2)}
letparitypgfmathresult
ifthenelse{equal{parity}{0.0}}
{node (rc) [fill = lightgray] at (c, r){}}
{node (rc) at (c, r){}};
}
}
end{tikzpicture}
end{document}
However, using isodd
of xifthen
does not produce the same result. What is wrong here? Or are there any alternative similar solutions?
documentclass[tikz]{standalone}
usepackage{xifthen}
begin{document}
begin{tikzpicture}[every node/.style = {draw, circle, minimum size = 10pt}]
foreach r in {1, ..., 4} {
foreach c in {1, ..., 5} {
ifthenelse{NOT isodd{r + c}}
{node (rc) [fill = lightgray] at (c, r){}}
{node (rc) at (c, r){}};
}
}
end{tikzpicture}
end{document}
nodes foreach xifthen arithmetic
The white/black board can be drawn by testing the parity of node positions as follows:
documentclass[tikz]{standalone}
usepackage{xifthen}
begin{document}
begin{tikzpicture}[every node/.style = {draw, circle, minimum size = 10pt}]
foreach r in {1, ..., 4} {
foreach c in {1, ..., 5} {
pgfmathparse{mod(r + c, 2)}
letparitypgfmathresult
ifthenelse{equal{parity}{0.0}}
{node (rc) [fill = lightgray] at (c, r){}}
{node (rc) at (c, r){}};
}
}
end{tikzpicture}
end{document}
However, using isodd
of xifthen
does not produce the same result. What is wrong here? Or are there any alternative similar solutions?
documentclass[tikz]{standalone}
usepackage{xifthen}
begin{document}
begin{tikzpicture}[every node/.style = {draw, circle, minimum size = 10pt}]
foreach r in {1, ..., 4} {
foreach c in {1, ..., 5} {
ifthenelse{NOT isodd{r + c}}
{node (rc) [fill = lightgray] at (c, r){}}
{node (rc) at (c, r){}};
}
}
end{tikzpicture}
end{document}
nodes foreach xifthen arithmetic
nodes foreach xifthen arithmetic
edited 4 hours ago
Werner
436k639571647
436k639571647
asked 4 hours ago
hengxin
9572825
9572825
2
Can I suggest using TeX'sifodd
instead ofifthenelse
fromxifthen
? See Why is theifthen
package obsolete?
– Werner
4 hours ago
@Werner Thanks. It is also appreciated. Would you mind posting it as an answer?
– hengxin
4 hours ago
add a comment |
2
Can I suggest using TeX'sifodd
instead ofifthenelse
fromxifthen
? See Why is theifthen
package obsolete?
– Werner
4 hours ago
@Werner Thanks. It is also appreciated. Would you mind posting it as an answer?
– hengxin
4 hours ago
2
2
Can I suggest using TeX's
ifodd
instead of ifthenelse
from xifthen
? See Why is the ifthen
package obsolete?– Werner
4 hours ago
Can I suggest using TeX's
ifodd
instead of ifthenelse
from xifthen
? See Why is the ifthen
package obsolete?– Werner
4 hours ago
@Werner Thanks. It is also appreciated. Would you mind posting it as an answer?
– hengxin
4 hours ago
@Werner Thanks. It is also appreciated. Would you mind posting it as an answer?
– hengxin
4 hours ago
add a comment |
2 Answers
2
active
oldest
votes
I'd suggest using TeX's ifodd
(or etoolbox
); xifthen
-and-friends may be considered obsolete:
documentclass{article}
usepackage{xfp,tikz}
begin{document}
begin{tikzpicture}[every node/.style = {draw, circle, minimum size = 10pt}]
foreach r in {1, ..., 4} {
foreach c in {1, ..., 5} {
ifoddinteval{r+c}
node (rc) [fill = lightgray] at (c, r) {};
else
node (rc) at (c, r) {};
fi
}
}
end{tikzpicture}
end{document}
I use xfp
since it is convenient and provides an expandable inteval
for int
eger eval
uation that can be used in conditioning options like ifodd
. You can also do it without xfp
:
ifoddnumexprr+crelax
%...
add a comment |
You are implicitly assuming that isodd does calculations. But this is not what happens, it actually simply takes the begin of the argument until it hits something that is no longer a number. So you would need to do the addition first and then fed the result to isodd. Or use the tools of pgf:
documentclass{article}
usepackage{tikz}
usepackage{xifthen}
begin{document}
ifthenelse{isodd{124blub}}{odd}{even}
ifthenelse{isodd{123blub}}{odd}{even}
ifthenelse{isodd{2+3}}{odd}{even}
ifthenelse{isodd{3+2}}{odd}{even}
bigskip
begin{tikzpicture}[every node/.style = {draw, circle, minimum size = 10pt}]
foreach r in {1, ..., 4} {
foreach c in {1, ..., 5} {
pgfmathsetmacromycolor{isodd{numexprr+c}?"lightgray":"white"}
node (rc) [fill =mycolor ] at (c, r){};
}
}
end{tikzpicture}
end{document}
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%2f467485%2fwhat-is-wrong-with-the-use-of-isodd-of-xifthen%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
I'd suggest using TeX's ifodd
(or etoolbox
); xifthen
-and-friends may be considered obsolete:
documentclass{article}
usepackage{xfp,tikz}
begin{document}
begin{tikzpicture}[every node/.style = {draw, circle, minimum size = 10pt}]
foreach r in {1, ..., 4} {
foreach c in {1, ..., 5} {
ifoddinteval{r+c}
node (rc) [fill = lightgray] at (c, r) {};
else
node (rc) at (c, r) {};
fi
}
}
end{tikzpicture}
end{document}
I use xfp
since it is convenient and provides an expandable inteval
for int
eger eval
uation that can be used in conditioning options like ifodd
. You can also do it without xfp
:
ifoddnumexprr+crelax
%...
add a comment |
I'd suggest using TeX's ifodd
(or etoolbox
); xifthen
-and-friends may be considered obsolete:
documentclass{article}
usepackage{xfp,tikz}
begin{document}
begin{tikzpicture}[every node/.style = {draw, circle, minimum size = 10pt}]
foreach r in {1, ..., 4} {
foreach c in {1, ..., 5} {
ifoddinteval{r+c}
node (rc) [fill = lightgray] at (c, r) {};
else
node (rc) at (c, r) {};
fi
}
}
end{tikzpicture}
end{document}
I use xfp
since it is convenient and provides an expandable inteval
for int
eger eval
uation that can be used in conditioning options like ifodd
. You can also do it without xfp
:
ifoddnumexprr+crelax
%...
add a comment |
I'd suggest using TeX's ifodd
(or etoolbox
); xifthen
-and-friends may be considered obsolete:
documentclass{article}
usepackage{xfp,tikz}
begin{document}
begin{tikzpicture}[every node/.style = {draw, circle, minimum size = 10pt}]
foreach r in {1, ..., 4} {
foreach c in {1, ..., 5} {
ifoddinteval{r+c}
node (rc) [fill = lightgray] at (c, r) {};
else
node (rc) at (c, r) {};
fi
}
}
end{tikzpicture}
end{document}
I use xfp
since it is convenient and provides an expandable inteval
for int
eger eval
uation that can be used in conditioning options like ifodd
. You can also do it without xfp
:
ifoddnumexprr+crelax
%...
I'd suggest using TeX's ifodd
(or etoolbox
); xifthen
-and-friends may be considered obsolete:
documentclass{article}
usepackage{xfp,tikz}
begin{document}
begin{tikzpicture}[every node/.style = {draw, circle, minimum size = 10pt}]
foreach r in {1, ..., 4} {
foreach c in {1, ..., 5} {
ifoddinteval{r+c}
node (rc) [fill = lightgray] at (c, r) {};
else
node (rc) at (c, r) {};
fi
}
}
end{tikzpicture}
end{document}
I use xfp
since it is convenient and provides an expandable inteval
for int
eger eval
uation that can be used in conditioning options like ifodd
. You can also do it without xfp
:
ifoddnumexprr+crelax
%...
answered 4 hours ago
Werner
436k639571647
436k639571647
add a comment |
add a comment |
You are implicitly assuming that isodd does calculations. But this is not what happens, it actually simply takes the begin of the argument until it hits something that is no longer a number. So you would need to do the addition first and then fed the result to isodd. Or use the tools of pgf:
documentclass{article}
usepackage{tikz}
usepackage{xifthen}
begin{document}
ifthenelse{isodd{124blub}}{odd}{even}
ifthenelse{isodd{123blub}}{odd}{even}
ifthenelse{isodd{2+3}}{odd}{even}
ifthenelse{isodd{3+2}}{odd}{even}
bigskip
begin{tikzpicture}[every node/.style = {draw, circle, minimum size = 10pt}]
foreach r in {1, ..., 4} {
foreach c in {1, ..., 5} {
pgfmathsetmacromycolor{isodd{numexprr+c}?"lightgray":"white"}
node (rc) [fill =mycolor ] at (c, r){};
}
}
end{tikzpicture}
end{document}
add a comment |
You are implicitly assuming that isodd does calculations. But this is not what happens, it actually simply takes the begin of the argument until it hits something that is no longer a number. So you would need to do the addition first and then fed the result to isodd. Or use the tools of pgf:
documentclass{article}
usepackage{tikz}
usepackage{xifthen}
begin{document}
ifthenelse{isodd{124blub}}{odd}{even}
ifthenelse{isodd{123blub}}{odd}{even}
ifthenelse{isodd{2+3}}{odd}{even}
ifthenelse{isodd{3+2}}{odd}{even}
bigskip
begin{tikzpicture}[every node/.style = {draw, circle, minimum size = 10pt}]
foreach r in {1, ..., 4} {
foreach c in {1, ..., 5} {
pgfmathsetmacromycolor{isodd{numexprr+c}?"lightgray":"white"}
node (rc) [fill =mycolor ] at (c, r){};
}
}
end{tikzpicture}
end{document}
add a comment |
You are implicitly assuming that isodd does calculations. But this is not what happens, it actually simply takes the begin of the argument until it hits something that is no longer a number. So you would need to do the addition first and then fed the result to isodd. Or use the tools of pgf:
documentclass{article}
usepackage{tikz}
usepackage{xifthen}
begin{document}
ifthenelse{isodd{124blub}}{odd}{even}
ifthenelse{isodd{123blub}}{odd}{even}
ifthenelse{isodd{2+3}}{odd}{even}
ifthenelse{isodd{3+2}}{odd}{even}
bigskip
begin{tikzpicture}[every node/.style = {draw, circle, minimum size = 10pt}]
foreach r in {1, ..., 4} {
foreach c in {1, ..., 5} {
pgfmathsetmacromycolor{isodd{numexprr+c}?"lightgray":"white"}
node (rc) [fill =mycolor ] at (c, r){};
}
}
end{tikzpicture}
end{document}
You are implicitly assuming that isodd does calculations. But this is not what happens, it actually simply takes the begin of the argument until it hits something that is no longer a number. So you would need to do the addition first and then fed the result to isodd. Or use the tools of pgf:
documentclass{article}
usepackage{tikz}
usepackage{xifthen}
begin{document}
ifthenelse{isodd{124blub}}{odd}{even}
ifthenelse{isodd{123blub}}{odd}{even}
ifthenelse{isodd{2+3}}{odd}{even}
ifthenelse{isodd{3+2}}{odd}{even}
bigskip
begin{tikzpicture}[every node/.style = {draw, circle, minimum size = 10pt}]
foreach r in {1, ..., 4} {
foreach c in {1, ..., 5} {
pgfmathsetmacromycolor{isodd{numexprr+c}?"lightgray":"white"}
node (rc) [fill =mycolor ] at (c, r){};
}
}
end{tikzpicture}
end{document}
answered 30 mins ago
Ulrike Fischer
185k7289668
185k7289668
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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%2f467485%2fwhat-is-wrong-with-the-use-of-isodd-of-xifthen%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
2
Can I suggest using TeX's
ifodd
instead ofifthenelse
fromxifthen
? See Why is theifthen
package obsolete?– Werner
4 hours ago
@Werner Thanks. It is also appreciated. Would you mind posting it as an answer?
– hengxin
4 hours ago