Conditionals within tikz node specification
Clash Royale CLAN TAG#URR8PPP
up vote
4
down vote
favorite
I would like to specify custom hierarchies of tikz nodes where I do a few geometry calculations related to text depth, text width, text height, and so on.
In the process of writing custom commands to automate some of these calculations, I end up wanting to use TeX conditionals mixed in with tikz code. I read in another question that pgfextra can be used for this. However, it seems that this only works at the level of the tikzpicture environment.
A minimal example of what I would like to do is the following:
documentclass[class=minimal, border=0pt]standalone
usepackagetikz
newififDebug
%Debugtrue
Debugfalse
newcommandMyNode
node[anchor=north west,
minimum width=5cm,
minimum height=5cm,
fill=green,
pgfextraifDebug opacity=0.2,fi
] at (current page.north west)
begindocument
begintikzpicture
MyNode;
endtikzpicture
enddocument
The line containing pgfextra is giving me trouble. What should I do to conditionally change arguments to node?
Thanks!
tikz-pgf
New contributor
add a comment |Â
up vote
4
down vote
favorite
I would like to specify custom hierarchies of tikz nodes where I do a few geometry calculations related to text depth, text width, text height, and so on.
In the process of writing custom commands to automate some of these calculations, I end up wanting to use TeX conditionals mixed in with tikz code. I read in another question that pgfextra can be used for this. However, it seems that this only works at the level of the tikzpicture environment.
A minimal example of what I would like to do is the following:
documentclass[class=minimal, border=0pt]standalone
usepackagetikz
newififDebug
%Debugtrue
Debugfalse
newcommandMyNode
node[anchor=north west,
minimum width=5cm,
minimum height=5cm,
fill=green,
pgfextraifDebug opacity=0.2,fi
] at (current page.north west)
begindocument
begintikzpicture
MyNode;
endtikzpicture
enddocument
The line containing pgfextra is giving me trouble. What should I do to conditionally change arguments to node?
Thanks!
tikz-pgf
New contributor
add a comment |Â
up vote
4
down vote
favorite
up vote
4
down vote
favorite
I would like to specify custom hierarchies of tikz nodes where I do a few geometry calculations related to text depth, text width, text height, and so on.
In the process of writing custom commands to automate some of these calculations, I end up wanting to use TeX conditionals mixed in with tikz code. I read in another question that pgfextra can be used for this. However, it seems that this only works at the level of the tikzpicture environment.
A minimal example of what I would like to do is the following:
documentclass[class=minimal, border=0pt]standalone
usepackagetikz
newififDebug
%Debugtrue
Debugfalse
newcommandMyNode
node[anchor=north west,
minimum width=5cm,
minimum height=5cm,
fill=green,
pgfextraifDebug opacity=0.2,fi
] at (current page.north west)
begindocument
begintikzpicture
MyNode;
endtikzpicture
enddocument
The line containing pgfextra is giving me trouble. What should I do to conditionally change arguments to node?
Thanks!
tikz-pgf
New contributor
I would like to specify custom hierarchies of tikz nodes where I do a few geometry calculations related to text depth, text width, text height, and so on.
In the process of writing custom commands to automate some of these calculations, I end up wanting to use TeX conditionals mixed in with tikz code. I read in another question that pgfextra can be used for this. However, it seems that this only works at the level of the tikzpicture environment.
A minimal example of what I would like to do is the following:
documentclass[class=minimal, border=0pt]standalone
usepackagetikz
newififDebug
%Debugtrue
Debugfalse
newcommandMyNode
node[anchor=north west,
minimum width=5cm,
minimum height=5cm,
fill=green,
pgfextraifDebug opacity=0.2,fi
] at (current page.north west)
begindocument
begintikzpicture
MyNode;
endtikzpicture
enddocument
The line containing pgfextra is giving me trouble. What should I do to conditionally change arguments to node?
Thanks!
tikz-pgf
tikz-pgf
New contributor
New contributor
New contributor
asked 2 days ago
sblatt
333
333
New contributor
New contributor
add a comment |Â
add a comment |Â
2 Answers
2
active
oldest
votes
up vote
5
down vote
accepted
Welcome to TeX.SE! Please try to avoid all pgfextra
stuff. You can achieve almost everything with pgfkeys, also here.
documentclass[class=minimal, border=0pt]standalone
usepackagetikz
newififDebug
%Debugtrue
Debugfalse
tikzsetDebug/.code=ifDebugpgfkeysalsoopacity=0.2fi
newcommandMyNode
node[anchor=north west,
minimum width=5cm,
minimum height=5cm,
fill=green,
Debug,
] at (current page.north west)
begindocument
begintikzpicture
Debugtrue
MyNode;
endtikzpicture
enddocument
If I comment out Debugtrue
, I get.
add a comment |Â
up vote
4
down vote
With a Tikz style (implemented with the /.code
handler) this is rather straightforward:
documentclass[class=minimal, border=0pt]standalone
usepackagetikz
newififDebug
Debugtrue
%Debugfalse
tikzset
my node/.code=
tikzset
anchor=north west,
minimum width=5cm,
minimum height=5cm,
fill=green,
ifDebug
tikzsetopacity=0.2
fi
begindocument
begintikzpicture
node[my node];
Debugfalse
node[my node] at (6,0);
endtikzpicture
enddocument
As mentioned by marmot in his answer you should stay away from pgfextra
in general. My personal preference is also to stay away from custom commands where style
s can do the same, but that really is personal.
1
You were faster, +1. I don't know why someone would upvote only my answer, but not yours. Sad.
â marmot
2 days ago
@marmot Well if someone thinks your solution is cleaner (which I could agree with) then it's a normal reaction :)
â Max
2 days ago
Thanks to both of you for the quick replies!
â sblatt
2 days ago
add a comment |Â
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
5
down vote
accepted
Welcome to TeX.SE! Please try to avoid all pgfextra
stuff. You can achieve almost everything with pgfkeys, also here.
documentclass[class=minimal, border=0pt]standalone
usepackagetikz
newififDebug
%Debugtrue
Debugfalse
tikzsetDebug/.code=ifDebugpgfkeysalsoopacity=0.2fi
newcommandMyNode
node[anchor=north west,
minimum width=5cm,
minimum height=5cm,
fill=green,
Debug,
] at (current page.north west)
begindocument
begintikzpicture
Debugtrue
MyNode;
endtikzpicture
enddocument
If I comment out Debugtrue
, I get.
add a comment |Â
up vote
5
down vote
accepted
Welcome to TeX.SE! Please try to avoid all pgfextra
stuff. You can achieve almost everything with pgfkeys, also here.
documentclass[class=minimal, border=0pt]standalone
usepackagetikz
newififDebug
%Debugtrue
Debugfalse
tikzsetDebug/.code=ifDebugpgfkeysalsoopacity=0.2fi
newcommandMyNode
node[anchor=north west,
minimum width=5cm,
minimum height=5cm,
fill=green,
Debug,
] at (current page.north west)
begindocument
begintikzpicture
Debugtrue
MyNode;
endtikzpicture
enddocument
If I comment out Debugtrue
, I get.
add a comment |Â
up vote
5
down vote
accepted
up vote
5
down vote
accepted
Welcome to TeX.SE! Please try to avoid all pgfextra
stuff. You can achieve almost everything with pgfkeys, also here.
documentclass[class=minimal, border=0pt]standalone
usepackagetikz
newififDebug
%Debugtrue
Debugfalse
tikzsetDebug/.code=ifDebugpgfkeysalsoopacity=0.2fi
newcommandMyNode
node[anchor=north west,
minimum width=5cm,
minimum height=5cm,
fill=green,
Debug,
] at (current page.north west)
begindocument
begintikzpicture
Debugtrue
MyNode;
endtikzpicture
enddocument
If I comment out Debugtrue
, I get.
Welcome to TeX.SE! Please try to avoid all pgfextra
stuff. You can achieve almost everything with pgfkeys, also here.
documentclass[class=minimal, border=0pt]standalone
usepackagetikz
newififDebug
%Debugtrue
Debugfalse
tikzsetDebug/.code=ifDebugpgfkeysalsoopacity=0.2fi
newcommandMyNode
node[anchor=north west,
minimum width=5cm,
minimum height=5cm,
fill=green,
Debug,
] at (current page.north west)
begindocument
begintikzpicture
Debugtrue
MyNode;
endtikzpicture
enddocument
If I comment out Debugtrue
, I get.
answered 2 days ago
marmot
56.8k462124
56.8k462124
add a comment |Â
add a comment |Â
up vote
4
down vote
With a Tikz style (implemented with the /.code
handler) this is rather straightforward:
documentclass[class=minimal, border=0pt]standalone
usepackagetikz
newififDebug
Debugtrue
%Debugfalse
tikzset
my node/.code=
tikzset
anchor=north west,
minimum width=5cm,
minimum height=5cm,
fill=green,
ifDebug
tikzsetopacity=0.2
fi
begindocument
begintikzpicture
node[my node];
Debugfalse
node[my node] at (6,0);
endtikzpicture
enddocument
As mentioned by marmot in his answer you should stay away from pgfextra
in general. My personal preference is also to stay away from custom commands where style
s can do the same, but that really is personal.
1
You were faster, +1. I don't know why someone would upvote only my answer, but not yours. Sad.
â marmot
2 days ago
@marmot Well if someone thinks your solution is cleaner (which I could agree with) then it's a normal reaction :)
â Max
2 days ago
Thanks to both of you for the quick replies!
â sblatt
2 days ago
add a comment |Â
up vote
4
down vote
With a Tikz style (implemented with the /.code
handler) this is rather straightforward:
documentclass[class=minimal, border=0pt]standalone
usepackagetikz
newififDebug
Debugtrue
%Debugfalse
tikzset
my node/.code=
tikzset
anchor=north west,
minimum width=5cm,
minimum height=5cm,
fill=green,
ifDebug
tikzsetopacity=0.2
fi
begindocument
begintikzpicture
node[my node];
Debugfalse
node[my node] at (6,0);
endtikzpicture
enddocument
As mentioned by marmot in his answer you should stay away from pgfextra
in general. My personal preference is also to stay away from custom commands where style
s can do the same, but that really is personal.
1
You were faster, +1. I don't know why someone would upvote only my answer, but not yours. Sad.
â marmot
2 days ago
@marmot Well if someone thinks your solution is cleaner (which I could agree with) then it's a normal reaction :)
â Max
2 days ago
Thanks to both of you for the quick replies!
â sblatt
2 days ago
add a comment |Â
up vote
4
down vote
up vote
4
down vote
With a Tikz style (implemented with the /.code
handler) this is rather straightforward:
documentclass[class=minimal, border=0pt]standalone
usepackagetikz
newififDebug
Debugtrue
%Debugfalse
tikzset
my node/.code=
tikzset
anchor=north west,
minimum width=5cm,
minimum height=5cm,
fill=green,
ifDebug
tikzsetopacity=0.2
fi
begindocument
begintikzpicture
node[my node];
Debugfalse
node[my node] at (6,0);
endtikzpicture
enddocument
As mentioned by marmot in his answer you should stay away from pgfextra
in general. My personal preference is also to stay away from custom commands where style
s can do the same, but that really is personal.
With a Tikz style (implemented with the /.code
handler) this is rather straightforward:
documentclass[class=minimal, border=0pt]standalone
usepackagetikz
newififDebug
Debugtrue
%Debugfalse
tikzset
my node/.code=
tikzset
anchor=north west,
minimum width=5cm,
minimum height=5cm,
fill=green,
ifDebug
tikzsetopacity=0.2
fi
begindocument
begintikzpicture
node[my node];
Debugfalse
node[my node] at (6,0);
endtikzpicture
enddocument
As mentioned by marmot in his answer you should stay away from pgfextra
in general. My personal preference is also to stay away from custom commands where style
s can do the same, but that really is personal.
edited 2 days ago
answered 2 days ago
Max
6,14311727
6,14311727
1
You were faster, +1. I don't know why someone would upvote only my answer, but not yours. Sad.
â marmot
2 days ago
@marmot Well if someone thinks your solution is cleaner (which I could agree with) then it's a normal reaction :)
â Max
2 days ago
Thanks to both of you for the quick replies!
â sblatt
2 days ago
add a comment |Â
1
You were faster, +1. I don't know why someone would upvote only my answer, but not yours. Sad.
â marmot
2 days ago
@marmot Well if someone thinks your solution is cleaner (which I could agree with) then it's a normal reaction :)
â Max
2 days ago
Thanks to both of you for the quick replies!
â sblatt
2 days ago
1
1
You were faster, +1. I don't know why someone would upvote only my answer, but not yours. Sad.
â marmot
2 days ago
You were faster, +1. I don't know why someone would upvote only my answer, but not yours. Sad.
â marmot
2 days ago
@marmot Well if someone thinks your solution is cleaner (which I could agree with) then it's a normal reaction :)
â Max
2 days ago
@marmot Well if someone thinks your solution is cleaner (which I could agree with) then it's a normal reaction :)
â Max
2 days ago
Thanks to both of you for the quick replies!
â sblatt
2 days ago
Thanks to both of you for the quick replies!
â sblatt
2 days ago
add a comment |Â
sblatt is a new contributor. Be nice, and check out our Code of Conduct.
sblatt is a new contributor. Be nice, and check out our Code of Conduct.
sblatt is a new contributor. Be nice, and check out our Code of Conduct.
sblatt is a new contributor. Be nice, and check out our Code of Conduct.
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
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f450236%2fconditionals-within-tikz-node-specification%23new-answer', 'question_page');
);
Post as a guest
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
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
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