Modify the code of the example Plane partition by Jang Soo Kim from “texample.net”
From the answer to this question, is it possible to make a lower cube position void, to create this drawing
documentclass{beamer}
setbeamertemplate{navigation symbols}{}% to suppresses (hide) navigation symbols bar
usepackage{tikz}
usepackage{verbatim}
% Three counters
newcounter{x}
newcounter{y}
newcounter{z}
% The angles of x,y,z-axes
newcommandxaxis{210}
newcommandyaxis{-30}
newcommandzaxis{90}
% The top side of a cube
newcommandtopside[3]{
fill[fill=yellow, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (30:1) -- (0,1) --(150:1)--(0,0);
}
% The left side of a cube
newcommandleftside[3]{
fill[fill=green, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (0,-1) -- (210:1) --(150:1)--(0,0);
}
% The right side of a cube
newcommandrightside[3]{
fill[fill=blue, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (30:1) -- (-30:1) --(0,-1)--(0,0);
}
% The cube
newcommandcube[3]{
topside{#1}{#2}{#3} leftside{#1}{#2}{#3} rightside{#1}{#2}{#3}
}
newcommandplanepartition[1]{
setcounter{x}{-1}
foreach a in {#1} {
addtocounter{x}{1}
setcounter{y}{-1}
foreach b in a {
addtocounter{y}{1}
setcounter{z}{-1}
ifnum b>0
foreach c in {1,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}
}fi}}}
begin{document}
begin{tikzpicture}
planepartition{{2,1,2,1,2,1,2},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{2,1,2,1,2,1,2}}%1st column from back to front{row1,... from left to right}%0 is the same as 2% it does not allow void for 0
end{tikzpicture}
end{document}
tikz-pgf
add a comment |
From the answer to this question, is it possible to make a lower cube position void, to create this drawing
documentclass{beamer}
setbeamertemplate{navigation symbols}{}% to suppresses (hide) navigation symbols bar
usepackage{tikz}
usepackage{verbatim}
% Three counters
newcounter{x}
newcounter{y}
newcounter{z}
% The angles of x,y,z-axes
newcommandxaxis{210}
newcommandyaxis{-30}
newcommandzaxis{90}
% The top side of a cube
newcommandtopside[3]{
fill[fill=yellow, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (30:1) -- (0,1) --(150:1)--(0,0);
}
% The left side of a cube
newcommandleftside[3]{
fill[fill=green, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (0,-1) -- (210:1) --(150:1)--(0,0);
}
% The right side of a cube
newcommandrightside[3]{
fill[fill=blue, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (30:1) -- (-30:1) --(0,-1)--(0,0);
}
% The cube
newcommandcube[3]{
topside{#1}{#2}{#3} leftside{#1}{#2}{#3} rightside{#1}{#2}{#3}
}
newcommandplanepartition[1]{
setcounter{x}{-1}
foreach a in {#1} {
addtocounter{x}{1}
setcounter{y}{-1}
foreach b in a {
addtocounter{y}{1}
setcounter{z}{-1}
ifnum b>0
foreach c in {1,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}
}fi}}}
begin{document}
begin{tikzpicture}
planepartition{{2,1,2,1,2,1,2},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{2,1,2,1,2,1,2}}%1st column from back to front{row1,... from left to right}%0 is the same as 2% it does not allow void for 0
end{tikzpicture}
end{document}
tikz-pgf
add a comment |
From the answer to this question, is it possible to make a lower cube position void, to create this drawing
documentclass{beamer}
setbeamertemplate{navigation symbols}{}% to suppresses (hide) navigation symbols bar
usepackage{tikz}
usepackage{verbatim}
% Three counters
newcounter{x}
newcounter{y}
newcounter{z}
% The angles of x,y,z-axes
newcommandxaxis{210}
newcommandyaxis{-30}
newcommandzaxis{90}
% The top side of a cube
newcommandtopside[3]{
fill[fill=yellow, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (30:1) -- (0,1) --(150:1)--(0,0);
}
% The left side of a cube
newcommandleftside[3]{
fill[fill=green, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (0,-1) -- (210:1) --(150:1)--(0,0);
}
% The right side of a cube
newcommandrightside[3]{
fill[fill=blue, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (30:1) -- (-30:1) --(0,-1)--(0,0);
}
% The cube
newcommandcube[3]{
topside{#1}{#2}{#3} leftside{#1}{#2}{#3} rightside{#1}{#2}{#3}
}
newcommandplanepartition[1]{
setcounter{x}{-1}
foreach a in {#1} {
addtocounter{x}{1}
setcounter{y}{-1}
foreach b in a {
addtocounter{y}{1}
setcounter{z}{-1}
ifnum b>0
foreach c in {1,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}
}fi}}}
begin{document}
begin{tikzpicture}
planepartition{{2,1,2,1,2,1,2},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{2,1,2,1,2,1,2}}%1st column from back to front{row1,... from left to right}%0 is the same as 2% it does not allow void for 0
end{tikzpicture}
end{document}
tikz-pgf
From the answer to this question, is it possible to make a lower cube position void, to create this drawing
documentclass{beamer}
setbeamertemplate{navigation symbols}{}% to suppresses (hide) navigation symbols bar
usepackage{tikz}
usepackage{verbatim}
% Three counters
newcounter{x}
newcounter{y}
newcounter{z}
% The angles of x,y,z-axes
newcommandxaxis{210}
newcommandyaxis{-30}
newcommandzaxis{90}
% The top side of a cube
newcommandtopside[3]{
fill[fill=yellow, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (30:1) -- (0,1) --(150:1)--(0,0);
}
% The left side of a cube
newcommandleftside[3]{
fill[fill=green, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (0,-1) -- (210:1) --(150:1)--(0,0);
}
% The right side of a cube
newcommandrightside[3]{
fill[fill=blue, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (30:1) -- (-30:1) --(0,-1)--(0,0);
}
% The cube
newcommandcube[3]{
topside{#1}{#2}{#3} leftside{#1}{#2}{#3} rightside{#1}{#2}{#3}
}
newcommandplanepartition[1]{
setcounter{x}{-1}
foreach a in {#1} {
addtocounter{x}{1}
setcounter{y}{-1}
foreach b in a {
addtocounter{y}{1}
setcounter{z}{-1}
ifnum b>0
foreach c in {1,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}
}fi}}}
begin{document}
begin{tikzpicture}
planepartition{{2,1,2,1,2,1,2},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{2,1,2,1,2,1,2}}%1st column from back to front{row1,... from left to right}%0 is the same as 2% it does not allow void for 0
end{tikzpicture}
end{document}
tikz-pgf
tikz-pgf
asked 1 hour ago
HanyHany
1,141416
1,141416
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
In this case, it is sufficient to build layer by layer from the lowest to the highest.
To do this, I modified the loop by adding an optional argument that is set to 0 by default. This allows you to keep the old syntax for previous graphics.
newcommandplanepartition[2][0]{
setcounter{x}{-1}
foreach a in {#2} {
addtocounter{x}{1}
setcounter{y}{-1}
foreach b in a {
addtocounter{y}{1}
setcounter{z}{-1}
addtocounter{z}{#1}
ifnum b>0
foreach c in {1,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}
}fi
}
}
}
documentclass{beamer}
setbeamertemplate{navigation symbols}{}% to suppresses (hide) navigation symbols bar
usepackage{tikz}
usepackage{verbatim}
% Three counters
newcounter{x}
newcounter{y}
newcounter{z}
% The angles of x,y,z-axes
newcommandxaxis{210}
newcommandyaxis{-30}
newcommandzaxis{90}
% The top side of a cube
newcommandtopside[3]{
fill[fill=yellow,fill opacity=.7, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}] (0,0) -- (30:1) -- (0,1) --(150:1)--(0,0);
}
% The left side of a cube
newcommandleftside[3]{
fill[fill=green,fill opacity=.7, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}] (0,0) -- (0,-1) -- (210:1) --(150:1)--(0,0);
}
% The right side of a cube
newcommandrightside[3]{
fill[fill=blue,fill opacity=.7, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}] (0,0) -- (30:1) -- (-30:1) --(0,-1)--(0,0);
}
% The cube
newcommandcube[3]{
topside{#1}{#2}{#3} leftside{#1}{#2}{#3} rightside{#1}{#2}{#3}
}
% Definition of planepartition
% To draw the following plane partition, just write planepartition{ {a, b, c}, {d,e} }.
% a b c
% d e
newcommandplanepartition[2][0]{
setcounter{x}{-1}
foreach a in {#2} {
addtocounter{x}{1}
setcounter{y}{-1}
foreach b in a {
addtocounter{y}{1}
setcounter{z}{-1}
addtocounter{z}{#1}
ifnum b>0
foreach c in {1,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}
}fi
}
}
}
begin{document}
begin{tikzpicture}% Old syntax is functional
planepartition{{2,1,2,1,2,1,2},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{2,1,2,1,2,1,2}}
end{tikzpicture}
begin{tikzpicture}% The optional argument allow to build layer by layer
planepartition{{1,1,0,1,0,1,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,1,0,1,0,1,1}}
planepartition[1]{{1,0,1,0,1,0,1},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{1,0,1,0,1,0,1}}
end{tikzpicture}
end{document}
Thank you very much for your answer. Both your code and marmot`s work fine.
– Hany
44 mins ago
1
Thank you, my way of doing things allows you to place several holes on the same column.
– AndréC
44 mins ago
add a comment |
Yes. I added an optional parameter which indicates how many boxes are to be skipped. So 2/1
means two boxes but skip the first one.
documentclass{beamer}
setbeamertemplate{navigation symbols}{}% to suppresses (hide) navigation symbols bar
usepackage{tikz}
usepackage{verbatim}
% Three counters
newcounter{x}
newcounter{y}
newcounter{z}
% The angles of x,y,z-axes
newcommandxaxis{210}
newcommandyaxis{-30}
newcommandzaxis{90}
% The top side of a cube
newcommandtopside[3]{
fill[fill=yellow, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (30:1) -- (0,1) --(150:1)--(0,0);
}
% The left side of a cube
newcommandleftside[3]{
fill[fill=green, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (0,-1) -- (210:1) --(150:1)--(0,0);
}
% The right side of a cube
newcommandrightside[3]{
fill[fill=blue, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (30:1) -- (-30:1) --(0,-1)--(0,0);
}
% The cube
newcommandcube[3]{
topside{#1}{#2}{#3} leftside{#1}{#2}{#3} rightside{#1}{#2}{#3}
}
newcommandplanepartition[1]{
setcounter{x}{-1}
foreach a in {#1} {
addtocounter{x}{1}
setcounter{y}{-1}
foreach b/d in a {
addtocounter{y}{1}
setcounter{z}{-1}
ifnumb>0
ifnumb=d
foreach c in {1,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}}
else
pgfmathtruncatemacro{cmin}{1+d}
addtocounter{z}{d}
foreach c in {cmin,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}}
fi
fi}}}
begin{document}
begin{tikzpicture}
planepartition{{2,1,2/1,1,2/1,1,2},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{2,1,2/1,1,2/1,1,2}}%1st column from back to front{row1,... from left to right}%0 is the same as 2% it does not allow void for 0
end{tikzpicture}
end{document}
Let me mention that in the above the old syntax is, of course, still functional. So if you drop the/1
you will get the original result. But with this method you do not have to draw two partitions.
– marmot
1 hour ago
Which /1 are you referring to?
– Hany
1 hour ago
@Hany Inplanepartition{{2,1,2/1,1,2/1,1,2},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},...
there some2
s are replaced by2/1
. These are the positions at which the lower cube becomes "void".
– marmot
1 hour ago
I tried your suggestion, but unfortunately it did not work. Would you please give me the whole code.
– Hany
59 mins ago
@Hany Did you run my above code? Which errors do you get? On my machine my code produces the output that is sown.
– marmot
58 mins ago
|
show 3 more comments
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%2f470983%2fmodify-the-code-of-the-example-plane-partition-by-jang-soo-kim-from-texample-ne%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
In this case, it is sufficient to build layer by layer from the lowest to the highest.
To do this, I modified the loop by adding an optional argument that is set to 0 by default. This allows you to keep the old syntax for previous graphics.
newcommandplanepartition[2][0]{
setcounter{x}{-1}
foreach a in {#2} {
addtocounter{x}{1}
setcounter{y}{-1}
foreach b in a {
addtocounter{y}{1}
setcounter{z}{-1}
addtocounter{z}{#1}
ifnum b>0
foreach c in {1,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}
}fi
}
}
}
documentclass{beamer}
setbeamertemplate{navigation symbols}{}% to suppresses (hide) navigation symbols bar
usepackage{tikz}
usepackage{verbatim}
% Three counters
newcounter{x}
newcounter{y}
newcounter{z}
% The angles of x,y,z-axes
newcommandxaxis{210}
newcommandyaxis{-30}
newcommandzaxis{90}
% The top side of a cube
newcommandtopside[3]{
fill[fill=yellow,fill opacity=.7, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}] (0,0) -- (30:1) -- (0,1) --(150:1)--(0,0);
}
% The left side of a cube
newcommandleftside[3]{
fill[fill=green,fill opacity=.7, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}] (0,0) -- (0,-1) -- (210:1) --(150:1)--(0,0);
}
% The right side of a cube
newcommandrightside[3]{
fill[fill=blue,fill opacity=.7, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}] (0,0) -- (30:1) -- (-30:1) --(0,-1)--(0,0);
}
% The cube
newcommandcube[3]{
topside{#1}{#2}{#3} leftside{#1}{#2}{#3} rightside{#1}{#2}{#3}
}
% Definition of planepartition
% To draw the following plane partition, just write planepartition{ {a, b, c}, {d,e} }.
% a b c
% d e
newcommandplanepartition[2][0]{
setcounter{x}{-1}
foreach a in {#2} {
addtocounter{x}{1}
setcounter{y}{-1}
foreach b in a {
addtocounter{y}{1}
setcounter{z}{-1}
addtocounter{z}{#1}
ifnum b>0
foreach c in {1,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}
}fi
}
}
}
begin{document}
begin{tikzpicture}% Old syntax is functional
planepartition{{2,1,2,1,2,1,2},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{2,1,2,1,2,1,2}}
end{tikzpicture}
begin{tikzpicture}% The optional argument allow to build layer by layer
planepartition{{1,1,0,1,0,1,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,1,0,1,0,1,1}}
planepartition[1]{{1,0,1,0,1,0,1},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{1,0,1,0,1,0,1}}
end{tikzpicture}
end{document}
Thank you very much for your answer. Both your code and marmot`s work fine.
– Hany
44 mins ago
1
Thank you, my way of doing things allows you to place several holes on the same column.
– AndréC
44 mins ago
add a comment |
In this case, it is sufficient to build layer by layer from the lowest to the highest.
To do this, I modified the loop by adding an optional argument that is set to 0 by default. This allows you to keep the old syntax for previous graphics.
newcommandplanepartition[2][0]{
setcounter{x}{-1}
foreach a in {#2} {
addtocounter{x}{1}
setcounter{y}{-1}
foreach b in a {
addtocounter{y}{1}
setcounter{z}{-1}
addtocounter{z}{#1}
ifnum b>0
foreach c in {1,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}
}fi
}
}
}
documentclass{beamer}
setbeamertemplate{navigation symbols}{}% to suppresses (hide) navigation symbols bar
usepackage{tikz}
usepackage{verbatim}
% Three counters
newcounter{x}
newcounter{y}
newcounter{z}
% The angles of x,y,z-axes
newcommandxaxis{210}
newcommandyaxis{-30}
newcommandzaxis{90}
% The top side of a cube
newcommandtopside[3]{
fill[fill=yellow,fill opacity=.7, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}] (0,0) -- (30:1) -- (0,1) --(150:1)--(0,0);
}
% The left side of a cube
newcommandleftside[3]{
fill[fill=green,fill opacity=.7, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}] (0,0) -- (0,-1) -- (210:1) --(150:1)--(0,0);
}
% The right side of a cube
newcommandrightside[3]{
fill[fill=blue,fill opacity=.7, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}] (0,0) -- (30:1) -- (-30:1) --(0,-1)--(0,0);
}
% The cube
newcommandcube[3]{
topside{#1}{#2}{#3} leftside{#1}{#2}{#3} rightside{#1}{#2}{#3}
}
% Definition of planepartition
% To draw the following plane partition, just write planepartition{ {a, b, c}, {d,e} }.
% a b c
% d e
newcommandplanepartition[2][0]{
setcounter{x}{-1}
foreach a in {#2} {
addtocounter{x}{1}
setcounter{y}{-1}
foreach b in a {
addtocounter{y}{1}
setcounter{z}{-1}
addtocounter{z}{#1}
ifnum b>0
foreach c in {1,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}
}fi
}
}
}
begin{document}
begin{tikzpicture}% Old syntax is functional
planepartition{{2,1,2,1,2,1,2},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{2,1,2,1,2,1,2}}
end{tikzpicture}
begin{tikzpicture}% The optional argument allow to build layer by layer
planepartition{{1,1,0,1,0,1,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,1,0,1,0,1,1}}
planepartition[1]{{1,0,1,0,1,0,1},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{1,0,1,0,1,0,1}}
end{tikzpicture}
end{document}
Thank you very much for your answer. Both your code and marmot`s work fine.
– Hany
44 mins ago
1
Thank you, my way of doing things allows you to place several holes on the same column.
– AndréC
44 mins ago
add a comment |
In this case, it is sufficient to build layer by layer from the lowest to the highest.
To do this, I modified the loop by adding an optional argument that is set to 0 by default. This allows you to keep the old syntax for previous graphics.
newcommandplanepartition[2][0]{
setcounter{x}{-1}
foreach a in {#2} {
addtocounter{x}{1}
setcounter{y}{-1}
foreach b in a {
addtocounter{y}{1}
setcounter{z}{-1}
addtocounter{z}{#1}
ifnum b>0
foreach c in {1,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}
}fi
}
}
}
documentclass{beamer}
setbeamertemplate{navigation symbols}{}% to suppresses (hide) navigation symbols bar
usepackage{tikz}
usepackage{verbatim}
% Three counters
newcounter{x}
newcounter{y}
newcounter{z}
% The angles of x,y,z-axes
newcommandxaxis{210}
newcommandyaxis{-30}
newcommandzaxis{90}
% The top side of a cube
newcommandtopside[3]{
fill[fill=yellow,fill opacity=.7, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}] (0,0) -- (30:1) -- (0,1) --(150:1)--(0,0);
}
% The left side of a cube
newcommandleftside[3]{
fill[fill=green,fill opacity=.7, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}] (0,0) -- (0,-1) -- (210:1) --(150:1)--(0,0);
}
% The right side of a cube
newcommandrightside[3]{
fill[fill=blue,fill opacity=.7, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}] (0,0) -- (30:1) -- (-30:1) --(0,-1)--(0,0);
}
% The cube
newcommandcube[3]{
topside{#1}{#2}{#3} leftside{#1}{#2}{#3} rightside{#1}{#2}{#3}
}
% Definition of planepartition
% To draw the following plane partition, just write planepartition{ {a, b, c}, {d,e} }.
% a b c
% d e
newcommandplanepartition[2][0]{
setcounter{x}{-1}
foreach a in {#2} {
addtocounter{x}{1}
setcounter{y}{-1}
foreach b in a {
addtocounter{y}{1}
setcounter{z}{-1}
addtocounter{z}{#1}
ifnum b>0
foreach c in {1,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}
}fi
}
}
}
begin{document}
begin{tikzpicture}% Old syntax is functional
planepartition{{2,1,2,1,2,1,2},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{2,1,2,1,2,1,2}}
end{tikzpicture}
begin{tikzpicture}% The optional argument allow to build layer by layer
planepartition{{1,1,0,1,0,1,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,1,0,1,0,1,1}}
planepartition[1]{{1,0,1,0,1,0,1},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{1,0,1,0,1,0,1}}
end{tikzpicture}
end{document}
In this case, it is sufficient to build layer by layer from the lowest to the highest.
To do this, I modified the loop by adding an optional argument that is set to 0 by default. This allows you to keep the old syntax for previous graphics.
newcommandplanepartition[2][0]{
setcounter{x}{-1}
foreach a in {#2} {
addtocounter{x}{1}
setcounter{y}{-1}
foreach b in a {
addtocounter{y}{1}
setcounter{z}{-1}
addtocounter{z}{#1}
ifnum b>0
foreach c in {1,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}
}fi
}
}
}
documentclass{beamer}
setbeamertemplate{navigation symbols}{}% to suppresses (hide) navigation symbols bar
usepackage{tikz}
usepackage{verbatim}
% Three counters
newcounter{x}
newcounter{y}
newcounter{z}
% The angles of x,y,z-axes
newcommandxaxis{210}
newcommandyaxis{-30}
newcommandzaxis{90}
% The top side of a cube
newcommandtopside[3]{
fill[fill=yellow,fill opacity=.7, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}] (0,0) -- (30:1) -- (0,1) --(150:1)--(0,0);
}
% The left side of a cube
newcommandleftside[3]{
fill[fill=green,fill opacity=.7, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}] (0,0) -- (0,-1) -- (210:1) --(150:1)--(0,0);
}
% The right side of a cube
newcommandrightside[3]{
fill[fill=blue,fill opacity=.7, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}] (0,0) -- (30:1) -- (-30:1) --(0,-1)--(0,0);
}
% The cube
newcommandcube[3]{
topside{#1}{#2}{#3} leftside{#1}{#2}{#3} rightside{#1}{#2}{#3}
}
% Definition of planepartition
% To draw the following plane partition, just write planepartition{ {a, b, c}, {d,e} }.
% a b c
% d e
newcommandplanepartition[2][0]{
setcounter{x}{-1}
foreach a in {#2} {
addtocounter{x}{1}
setcounter{y}{-1}
foreach b in a {
addtocounter{y}{1}
setcounter{z}{-1}
addtocounter{z}{#1}
ifnum b>0
foreach c in {1,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}
}fi
}
}
}
begin{document}
begin{tikzpicture}% Old syntax is functional
planepartition{{2,1,2,1,2,1,2},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{2,1,2,1,2,1,2}}
end{tikzpicture}
begin{tikzpicture}% The optional argument allow to build layer by layer
planepartition{{1,1,0,1,0,1,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,1,0,1,0,1,1}}
planepartition[1]{{1,0,1,0,1,0,1},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{1,0,1,0,1,0,1}}
end{tikzpicture}
end{document}
edited 1 hour ago
answered 1 hour ago
AndréCAndréC
8,55111446
8,55111446
Thank you very much for your answer. Both your code and marmot`s work fine.
– Hany
44 mins ago
1
Thank you, my way of doing things allows you to place several holes on the same column.
– AndréC
44 mins ago
add a comment |
Thank you very much for your answer. Both your code and marmot`s work fine.
– Hany
44 mins ago
1
Thank you, my way of doing things allows you to place several holes on the same column.
– AndréC
44 mins ago
Thank you very much for your answer. Both your code and marmot`s work fine.
– Hany
44 mins ago
Thank you very much for your answer. Both your code and marmot`s work fine.
– Hany
44 mins ago
1
1
Thank you, my way of doing things allows you to place several holes on the same column.
– AndréC
44 mins ago
Thank you, my way of doing things allows you to place several holes on the same column.
– AndréC
44 mins ago
add a comment |
Yes. I added an optional parameter which indicates how many boxes are to be skipped. So 2/1
means two boxes but skip the first one.
documentclass{beamer}
setbeamertemplate{navigation symbols}{}% to suppresses (hide) navigation symbols bar
usepackage{tikz}
usepackage{verbatim}
% Three counters
newcounter{x}
newcounter{y}
newcounter{z}
% The angles of x,y,z-axes
newcommandxaxis{210}
newcommandyaxis{-30}
newcommandzaxis{90}
% The top side of a cube
newcommandtopside[3]{
fill[fill=yellow, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (30:1) -- (0,1) --(150:1)--(0,0);
}
% The left side of a cube
newcommandleftside[3]{
fill[fill=green, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (0,-1) -- (210:1) --(150:1)--(0,0);
}
% The right side of a cube
newcommandrightside[3]{
fill[fill=blue, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (30:1) -- (-30:1) --(0,-1)--(0,0);
}
% The cube
newcommandcube[3]{
topside{#1}{#2}{#3} leftside{#1}{#2}{#3} rightside{#1}{#2}{#3}
}
newcommandplanepartition[1]{
setcounter{x}{-1}
foreach a in {#1} {
addtocounter{x}{1}
setcounter{y}{-1}
foreach b/d in a {
addtocounter{y}{1}
setcounter{z}{-1}
ifnumb>0
ifnumb=d
foreach c in {1,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}}
else
pgfmathtruncatemacro{cmin}{1+d}
addtocounter{z}{d}
foreach c in {cmin,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}}
fi
fi}}}
begin{document}
begin{tikzpicture}
planepartition{{2,1,2/1,1,2/1,1,2},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{2,1,2/1,1,2/1,1,2}}%1st column from back to front{row1,... from left to right}%0 is the same as 2% it does not allow void for 0
end{tikzpicture}
end{document}
Let me mention that in the above the old syntax is, of course, still functional. So if you drop the/1
you will get the original result. But with this method you do not have to draw two partitions.
– marmot
1 hour ago
Which /1 are you referring to?
– Hany
1 hour ago
@Hany Inplanepartition{{2,1,2/1,1,2/1,1,2},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},...
there some2
s are replaced by2/1
. These are the positions at which the lower cube becomes "void".
– marmot
1 hour ago
I tried your suggestion, but unfortunately it did not work. Would you please give me the whole code.
– Hany
59 mins ago
@Hany Did you run my above code? Which errors do you get? On my machine my code produces the output that is sown.
– marmot
58 mins ago
|
show 3 more comments
Yes. I added an optional parameter which indicates how many boxes are to be skipped. So 2/1
means two boxes but skip the first one.
documentclass{beamer}
setbeamertemplate{navigation symbols}{}% to suppresses (hide) navigation symbols bar
usepackage{tikz}
usepackage{verbatim}
% Three counters
newcounter{x}
newcounter{y}
newcounter{z}
% The angles of x,y,z-axes
newcommandxaxis{210}
newcommandyaxis{-30}
newcommandzaxis{90}
% The top side of a cube
newcommandtopside[3]{
fill[fill=yellow, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (30:1) -- (0,1) --(150:1)--(0,0);
}
% The left side of a cube
newcommandleftside[3]{
fill[fill=green, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (0,-1) -- (210:1) --(150:1)--(0,0);
}
% The right side of a cube
newcommandrightside[3]{
fill[fill=blue, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (30:1) -- (-30:1) --(0,-1)--(0,0);
}
% The cube
newcommandcube[3]{
topside{#1}{#2}{#3} leftside{#1}{#2}{#3} rightside{#1}{#2}{#3}
}
newcommandplanepartition[1]{
setcounter{x}{-1}
foreach a in {#1} {
addtocounter{x}{1}
setcounter{y}{-1}
foreach b/d in a {
addtocounter{y}{1}
setcounter{z}{-1}
ifnumb>0
ifnumb=d
foreach c in {1,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}}
else
pgfmathtruncatemacro{cmin}{1+d}
addtocounter{z}{d}
foreach c in {cmin,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}}
fi
fi}}}
begin{document}
begin{tikzpicture}
planepartition{{2,1,2/1,1,2/1,1,2},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{2,1,2/1,1,2/1,1,2}}%1st column from back to front{row1,... from left to right}%0 is the same as 2% it does not allow void for 0
end{tikzpicture}
end{document}
Let me mention that in the above the old syntax is, of course, still functional. So if you drop the/1
you will get the original result. But with this method you do not have to draw two partitions.
– marmot
1 hour ago
Which /1 are you referring to?
– Hany
1 hour ago
@Hany Inplanepartition{{2,1,2/1,1,2/1,1,2},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},...
there some2
s are replaced by2/1
. These are the positions at which the lower cube becomes "void".
– marmot
1 hour ago
I tried your suggestion, but unfortunately it did not work. Would you please give me the whole code.
– Hany
59 mins ago
@Hany Did you run my above code? Which errors do you get? On my machine my code produces the output that is sown.
– marmot
58 mins ago
|
show 3 more comments
Yes. I added an optional parameter which indicates how many boxes are to be skipped. So 2/1
means two boxes but skip the first one.
documentclass{beamer}
setbeamertemplate{navigation symbols}{}% to suppresses (hide) navigation symbols bar
usepackage{tikz}
usepackage{verbatim}
% Three counters
newcounter{x}
newcounter{y}
newcounter{z}
% The angles of x,y,z-axes
newcommandxaxis{210}
newcommandyaxis{-30}
newcommandzaxis{90}
% The top side of a cube
newcommandtopside[3]{
fill[fill=yellow, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (30:1) -- (0,1) --(150:1)--(0,0);
}
% The left side of a cube
newcommandleftside[3]{
fill[fill=green, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (0,-1) -- (210:1) --(150:1)--(0,0);
}
% The right side of a cube
newcommandrightside[3]{
fill[fill=blue, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (30:1) -- (-30:1) --(0,-1)--(0,0);
}
% The cube
newcommandcube[3]{
topside{#1}{#2}{#3} leftside{#1}{#2}{#3} rightside{#1}{#2}{#3}
}
newcommandplanepartition[1]{
setcounter{x}{-1}
foreach a in {#1} {
addtocounter{x}{1}
setcounter{y}{-1}
foreach b/d in a {
addtocounter{y}{1}
setcounter{z}{-1}
ifnumb>0
ifnumb=d
foreach c in {1,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}}
else
pgfmathtruncatemacro{cmin}{1+d}
addtocounter{z}{d}
foreach c in {cmin,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}}
fi
fi}}}
begin{document}
begin{tikzpicture}
planepartition{{2,1,2/1,1,2/1,1,2},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{2,1,2/1,1,2/1,1,2}}%1st column from back to front{row1,... from left to right}%0 is the same as 2% it does not allow void for 0
end{tikzpicture}
end{document}
Yes. I added an optional parameter which indicates how many boxes are to be skipped. So 2/1
means two boxes but skip the first one.
documentclass{beamer}
setbeamertemplate{navigation symbols}{}% to suppresses (hide) navigation symbols bar
usepackage{tikz}
usepackage{verbatim}
% Three counters
newcounter{x}
newcounter{y}
newcounter{z}
% The angles of x,y,z-axes
newcommandxaxis{210}
newcommandyaxis{-30}
newcommandzaxis{90}
% The top side of a cube
newcommandtopside[3]{
fill[fill=yellow, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (30:1) -- (0,1) --(150:1)--(0,0);
}
% The left side of a cube
newcommandleftside[3]{
fill[fill=green, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (0,-1) -- (210:1) --(150:1)--(0,0);
}
% The right side of a cube
newcommandrightside[3]{
fill[fill=blue, draw=black,shift={(xaxis:#1)},shift={(yaxis:#2)},
shift={(zaxis:#3)}, opacity=.7] (0,0) -- (30:1) -- (-30:1) --(0,-1)--(0,0);
}
% The cube
newcommandcube[3]{
topside{#1}{#2}{#3} leftside{#1}{#2}{#3} rightside{#1}{#2}{#3}
}
newcommandplanepartition[1]{
setcounter{x}{-1}
foreach a in {#1} {
addtocounter{x}{1}
setcounter{y}{-1}
foreach b/d in a {
addtocounter{y}{1}
setcounter{z}{-1}
ifnumb>0
ifnumb=d
foreach c in {1,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}}
else
pgfmathtruncatemacro{cmin}{1+d}
addtocounter{z}{d}
foreach c in {cmin,...,b} {
addtocounter{z}{1}
cube{value{x}}{value{y}}{value{z}}}
fi
fi}}}
begin{document}
begin{tikzpicture}
planepartition{{2,1,2/1,1,2/1,1,2},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},{2,1,2/1,1,2/1,1,2}}%1st column from back to front{row1,... from left to right}%0 is the same as 2% it does not allow void for 0
end{tikzpicture}
end{document}
answered 1 hour ago
marmotmarmot
92.8k4109203
92.8k4109203
Let me mention that in the above the old syntax is, of course, still functional. So if you drop the/1
you will get the original result. But with this method you do not have to draw two partitions.
– marmot
1 hour ago
Which /1 are you referring to?
– Hany
1 hour ago
@Hany Inplanepartition{{2,1,2/1,1,2/1,1,2},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},...
there some2
s are replaced by2/1
. These are the positions at which the lower cube becomes "void".
– marmot
1 hour ago
I tried your suggestion, but unfortunately it did not work. Would you please give me the whole code.
– Hany
59 mins ago
@Hany Did you run my above code? Which errors do you get? On my machine my code produces the output that is sown.
– marmot
58 mins ago
|
show 3 more comments
Let me mention that in the above the old syntax is, of course, still functional. So if you drop the/1
you will get the original result. But with this method you do not have to draw two partitions.
– marmot
1 hour ago
Which /1 are you referring to?
– Hany
1 hour ago
@Hany Inplanepartition{{2,1,2/1,1,2/1,1,2},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},...
there some2
s are replaced by2/1
. These are the positions at which the lower cube becomes "void".
– marmot
1 hour ago
I tried your suggestion, but unfortunately it did not work. Would you please give me the whole code.
– Hany
59 mins ago
@Hany Did you run my above code? Which errors do you get? On my machine my code produces the output that is sown.
– marmot
58 mins ago
Let me mention that in the above the old syntax is, of course, still functional. So if you drop the
/1
you will get the original result. But with this method you do not have to draw two partitions.– marmot
1 hour ago
Let me mention that in the above the old syntax is, of course, still functional. So if you drop the
/1
you will get the original result. But with this method you do not have to draw two partitions.– marmot
1 hour ago
Which /1 are you referring to?
– Hany
1 hour ago
Which /1 are you referring to?
– Hany
1 hour ago
@Hany In
planepartition{{2,1,2/1,1,2/1,1,2},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},...
there some 2
s are replaced by 2/1
. These are the positions at which the lower cube becomes "void".– marmot
1 hour ago
@Hany In
planepartition{{2,1,2/1,1,2/1,1,2},{1,0,0,0,0,0,1},{1,0,0,0,0,0,1},...
there some 2
s are replaced by 2/1
. These are the positions at which the lower cube becomes "void".– marmot
1 hour ago
I tried your suggestion, but unfortunately it did not work. Would you please give me the whole code.
– Hany
59 mins ago
I tried your suggestion, but unfortunately it did not work. Would you please give me the whole code.
– Hany
59 mins ago
@Hany Did you run my above code? Which errors do you get? On my machine my code produces the output that is sown.
– marmot
58 mins ago
@Hany Did you run my above code? Which errors do you get? On my machine my code produces the output that is sown.
– marmot
58 mins ago
|
show 3 more comments
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%2f470983%2fmodify-the-code-of-the-example-plane-partition-by-jang-soo-kim-from-texample-ne%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