Align the baselines of two nodes placed side by side
I have the following code with two nodes:
documentclass[crop,tikz]{standalone}
begin{document}
usetikzlibrary{positioning,calc}
tikzstyle{block} = [draw, rectangle, minimum height=1cm, minimum width=1cm, outer sep=0pt]
begin{tikzpicture}
node [block,align=center](A) { shortstack{double \ type} };
node [block,align=center,right=1.5cm of A](B) { shortstack{single \ type} };
end{tikzpicture}
end{document}
Because the content of node A has no "long" character that ranges below the baseline, the distance between the two lines is closer than in the second node B. There, the "g" character ranges below the baseline and therefore it seems that additional space is used and the two blocks are not aligned.
I could fix that by including a vphantom{g} into node A. However, that would make the line spacing large in both blocks.
Instead, I want that the line space is small, just as if there were no characters that range below the baseline.
Is it possible to somehow "ignore" these characters?
tikz-pgf shortstack
add a comment |
I have the following code with two nodes:
documentclass[crop,tikz]{standalone}
begin{document}
usetikzlibrary{positioning,calc}
tikzstyle{block} = [draw, rectangle, minimum height=1cm, minimum width=1cm, outer sep=0pt]
begin{tikzpicture}
node [block,align=center](A) { shortstack{double \ type} };
node [block,align=center,right=1.5cm of A](B) { shortstack{single \ type} };
end{tikzpicture}
end{document}
Because the content of node A has no "long" character that ranges below the baseline, the distance between the two lines is closer than in the second node B. There, the "g" character ranges below the baseline and therefore it seems that additional space is used and the two blocks are not aligned.
I could fix that by including a vphantom{g} into node A. However, that would make the line spacing large in both blocks.
Instead, I want that the line space is small, just as if there were no characters that range below the baseline.
Is it possible to somehow "ignore" these characters?
tikz-pgf shortstack
shortstack{sinsmash{g}le \ type}
– Steven B. Segletes
Nov 15 '18 at 20:45
add a comment |
I have the following code with two nodes:
documentclass[crop,tikz]{standalone}
begin{document}
usetikzlibrary{positioning,calc}
tikzstyle{block} = [draw, rectangle, minimum height=1cm, minimum width=1cm, outer sep=0pt]
begin{tikzpicture}
node [block,align=center](A) { shortstack{double \ type} };
node [block,align=center,right=1.5cm of A](B) { shortstack{single \ type} };
end{tikzpicture}
end{document}
Because the content of node A has no "long" character that ranges below the baseline, the distance between the two lines is closer than in the second node B. There, the "g" character ranges below the baseline and therefore it seems that additional space is used and the two blocks are not aligned.
I could fix that by including a vphantom{g} into node A. However, that would make the line spacing large in both blocks.
Instead, I want that the line space is small, just as if there were no characters that range below the baseline.
Is it possible to somehow "ignore" these characters?
tikz-pgf shortstack
I have the following code with two nodes:
documentclass[crop,tikz]{standalone}
begin{document}
usetikzlibrary{positioning,calc}
tikzstyle{block} = [draw, rectangle, minimum height=1cm, minimum width=1cm, outer sep=0pt]
begin{tikzpicture}
node [block,align=center](A) { shortstack{double \ type} };
node [block,align=center,right=1.5cm of A](B) { shortstack{single \ type} };
end{tikzpicture}
end{document}
Because the content of node A has no "long" character that ranges below the baseline, the distance between the two lines is closer than in the second node B. There, the "g" character ranges below the baseline and therefore it seems that additional space is used and the two blocks are not aligned.
I could fix that by including a vphantom{g} into node A. However, that would make the line spacing large in both blocks.
Instead, I want that the line space is small, just as if there were no characters that range below the baseline.
Is it possible to somehow "ignore" these characters?
tikz-pgf shortstack
tikz-pgf shortstack
edited Nov 17 '18 at 19:32
AndréC
8,30611445
8,30611445
asked Nov 15 '18 at 20:35
SampleTimeSampleTime
2426
2426
shortstack{sinsmash{g}le \ type}
– Steven B. Segletes
Nov 15 '18 at 20:45
add a comment |
shortstack{sinsmash{g}le \ type}
– Steven B. Segletes
Nov 15 '18 at 20:45
shortstack{sinsmash{g}le \ type}
– Steven B. Segletes
Nov 15 '18 at 20:45
shortstack{sinsmash{g}le \ type}
– Steven B. Segletes
Nov 15 '18 at 20:45
add a comment |
3 Answers
3
active
oldest
votes
You should just smash
the [b]
aseline of those words/phrases:
documentclass{article}
usepackage{tikz,amsmath}
begin{document}
usetikzlibrary{positioning,calc}
tikzstyle{block} = [draw, rectangle, minimum height=1cm, minimum width=1cm, outer sep=0pt]
begin{tikzpicture}
node [block,align=center](A) {shortstack{double \ type}};
node [block,align=center,right=1.5cm of A](B) {shortstack{smash[b]{single} \ type}};
end{tikzpicture}
end{document}
amsmath
provides the extended version of smash
.
+1 This is the first time I've seen thissmash
command, can you give me more details about it?
– AndréC
Nov 15 '18 at 20:53
3
See this code and its associated output.smash
removes the height and depth of its argument, whilesmash[b]
/smash[t]
removes only the depth/height.
– Werner
Nov 15 '18 at 21:00
add a comment |
Another method is to use the NextLine
macro instead of \
. This eliminates the need to go back and change things just because you changed the text:
References
- How to make mdframed ignore descenders in last line
Code:
documentclass[crop,tikz, border=2pt]{standalone}
begin{document}
%% https://tex.stackexchange.com/a/51406/4301
newcommand*{IgnodeDescenders}{-dimexprdpstrutbox+baselineskip}
newcommand*{NextLine}{strut\[IgnodeDescenders]}
usetikzlibrary{positioning,calc}
tikzstyle{block} = [draw, rectangle, minimum height=1cm, minimum width=1cm, outer sep=0pt]
begin{tikzpicture}
node [block,align=center](A) {shortstack{doubleNextLine type}};
node [block,align=center,right=1.5cm of A](B) {shortstack{singleNextLine type}};
end{tikzpicture}
end{document}
Somehow, when I tested this, it seems that the NewLine-line is larger than the "standard" line... If I replace the NewLine command in the A node with \, then distance of both lines is smaller although it should be the same?
– SampleTime
Nov 15 '18 at 22:25
add a comment |
This is discussed at length in the pgfmanual on p. 65. The upshot is that you can add a suitable text depth
.
documentclass[crop,tikz]{standalone}
begin{document}
usetikzlibrary{positioning,calc}
tikzset{block/.style={draw, rectangle, minimum height=1cm, minimum width=1cm,
outer sep=0pt,text height=3ex,text depth=.25ex}}
begin{tikzpicture}
node [block,align=center](A) { double \ type };
node [block,align=center,right=1.5cm of A](B) {single \ type };
draw[red] (A.west) -- (B.east);
end{tikzpicture}
end{document}
The red line is only to guide the eye.
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%2f460191%2falign-the-baselines-of-two-nodes-placed-side-by-side%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
You should just smash
the [b]
aseline of those words/phrases:
documentclass{article}
usepackage{tikz,amsmath}
begin{document}
usetikzlibrary{positioning,calc}
tikzstyle{block} = [draw, rectangle, minimum height=1cm, minimum width=1cm, outer sep=0pt]
begin{tikzpicture}
node [block,align=center](A) {shortstack{double \ type}};
node [block,align=center,right=1.5cm of A](B) {shortstack{smash[b]{single} \ type}};
end{tikzpicture}
end{document}
amsmath
provides the extended version of smash
.
+1 This is the first time I've seen thissmash
command, can you give me more details about it?
– AndréC
Nov 15 '18 at 20:53
3
See this code and its associated output.smash
removes the height and depth of its argument, whilesmash[b]
/smash[t]
removes only the depth/height.
– Werner
Nov 15 '18 at 21:00
add a comment |
You should just smash
the [b]
aseline of those words/phrases:
documentclass{article}
usepackage{tikz,amsmath}
begin{document}
usetikzlibrary{positioning,calc}
tikzstyle{block} = [draw, rectangle, minimum height=1cm, minimum width=1cm, outer sep=0pt]
begin{tikzpicture}
node [block,align=center](A) {shortstack{double \ type}};
node [block,align=center,right=1.5cm of A](B) {shortstack{smash[b]{single} \ type}};
end{tikzpicture}
end{document}
amsmath
provides the extended version of smash
.
+1 This is the first time I've seen thissmash
command, can you give me more details about it?
– AndréC
Nov 15 '18 at 20:53
3
See this code and its associated output.smash
removes the height and depth of its argument, whilesmash[b]
/smash[t]
removes only the depth/height.
– Werner
Nov 15 '18 at 21:00
add a comment |
You should just smash
the [b]
aseline of those words/phrases:
documentclass{article}
usepackage{tikz,amsmath}
begin{document}
usetikzlibrary{positioning,calc}
tikzstyle{block} = [draw, rectangle, minimum height=1cm, minimum width=1cm, outer sep=0pt]
begin{tikzpicture}
node [block,align=center](A) {shortstack{double \ type}};
node [block,align=center,right=1.5cm of A](B) {shortstack{smash[b]{single} \ type}};
end{tikzpicture}
end{document}
amsmath
provides the extended version of smash
.
You should just smash
the [b]
aseline of those words/phrases:
documentclass{article}
usepackage{tikz,amsmath}
begin{document}
usetikzlibrary{positioning,calc}
tikzstyle{block} = [draw, rectangle, minimum height=1cm, minimum width=1cm, outer sep=0pt]
begin{tikzpicture}
node [block,align=center](A) {shortstack{double \ type}};
node [block,align=center,right=1.5cm of A](B) {shortstack{smash[b]{single} \ type}};
end{tikzpicture}
end{document}
amsmath
provides the extended version of smash
.
answered Nov 15 '18 at 20:47
WernerWerner
439k659641658
439k659641658
+1 This is the first time I've seen thissmash
command, can you give me more details about it?
– AndréC
Nov 15 '18 at 20:53
3
See this code and its associated output.smash
removes the height and depth of its argument, whilesmash[b]
/smash[t]
removes only the depth/height.
– Werner
Nov 15 '18 at 21:00
add a comment |
+1 This is the first time I've seen thissmash
command, can you give me more details about it?
– AndréC
Nov 15 '18 at 20:53
3
See this code and its associated output.smash
removes the height and depth of its argument, whilesmash[b]
/smash[t]
removes only the depth/height.
– Werner
Nov 15 '18 at 21:00
+1 This is the first time I've seen this
smash
command, can you give me more details about it?– AndréC
Nov 15 '18 at 20:53
+1 This is the first time I've seen this
smash
command, can you give me more details about it?– AndréC
Nov 15 '18 at 20:53
3
3
See this code and its associated output.
smash
removes the height and depth of its argument, while smash[b]
/smash[t]
removes only the depth/height.– Werner
Nov 15 '18 at 21:00
See this code and its associated output.
smash
removes the height and depth of its argument, while smash[b]
/smash[t]
removes only the depth/height.– Werner
Nov 15 '18 at 21:00
add a comment |
Another method is to use the NextLine
macro instead of \
. This eliminates the need to go back and change things just because you changed the text:
References
- How to make mdframed ignore descenders in last line
Code:
documentclass[crop,tikz, border=2pt]{standalone}
begin{document}
%% https://tex.stackexchange.com/a/51406/4301
newcommand*{IgnodeDescenders}{-dimexprdpstrutbox+baselineskip}
newcommand*{NextLine}{strut\[IgnodeDescenders]}
usetikzlibrary{positioning,calc}
tikzstyle{block} = [draw, rectangle, minimum height=1cm, minimum width=1cm, outer sep=0pt]
begin{tikzpicture}
node [block,align=center](A) {shortstack{doubleNextLine type}};
node [block,align=center,right=1.5cm of A](B) {shortstack{singleNextLine type}};
end{tikzpicture}
end{document}
Somehow, when I tested this, it seems that the NewLine-line is larger than the "standard" line... If I replace the NewLine command in the A node with \, then distance of both lines is smaller although it should be the same?
– SampleTime
Nov 15 '18 at 22:25
add a comment |
Another method is to use the NextLine
macro instead of \
. This eliminates the need to go back and change things just because you changed the text:
References
- How to make mdframed ignore descenders in last line
Code:
documentclass[crop,tikz, border=2pt]{standalone}
begin{document}
%% https://tex.stackexchange.com/a/51406/4301
newcommand*{IgnodeDescenders}{-dimexprdpstrutbox+baselineskip}
newcommand*{NextLine}{strut\[IgnodeDescenders]}
usetikzlibrary{positioning,calc}
tikzstyle{block} = [draw, rectangle, minimum height=1cm, minimum width=1cm, outer sep=0pt]
begin{tikzpicture}
node [block,align=center](A) {shortstack{doubleNextLine type}};
node [block,align=center,right=1.5cm of A](B) {shortstack{singleNextLine type}};
end{tikzpicture}
end{document}
Somehow, when I tested this, it seems that the NewLine-line is larger than the "standard" line... If I replace the NewLine command in the A node with \, then distance of both lines is smaller although it should be the same?
– SampleTime
Nov 15 '18 at 22:25
add a comment |
Another method is to use the NextLine
macro instead of \
. This eliminates the need to go back and change things just because you changed the text:
References
- How to make mdframed ignore descenders in last line
Code:
documentclass[crop,tikz, border=2pt]{standalone}
begin{document}
%% https://tex.stackexchange.com/a/51406/4301
newcommand*{IgnodeDescenders}{-dimexprdpstrutbox+baselineskip}
newcommand*{NextLine}{strut\[IgnodeDescenders]}
usetikzlibrary{positioning,calc}
tikzstyle{block} = [draw, rectangle, minimum height=1cm, minimum width=1cm, outer sep=0pt]
begin{tikzpicture}
node [block,align=center](A) {shortstack{doubleNextLine type}};
node [block,align=center,right=1.5cm of A](B) {shortstack{singleNextLine type}};
end{tikzpicture}
end{document}
Another method is to use the NextLine
macro instead of \
. This eliminates the need to go back and change things just because you changed the text:
References
- How to make mdframed ignore descenders in last line
Code:
documentclass[crop,tikz, border=2pt]{standalone}
begin{document}
%% https://tex.stackexchange.com/a/51406/4301
newcommand*{IgnodeDescenders}{-dimexprdpstrutbox+baselineskip}
newcommand*{NextLine}{strut\[IgnodeDescenders]}
usetikzlibrary{positioning,calc}
tikzstyle{block} = [draw, rectangle, minimum height=1cm, minimum width=1cm, outer sep=0pt]
begin{tikzpicture}
node [block,align=center](A) {shortstack{doubleNextLine type}};
node [block,align=center,right=1.5cm of A](B) {shortstack{singleNextLine type}};
end{tikzpicture}
end{document}
answered Nov 15 '18 at 20:57
Peter GrillPeter Grill
164k25437749
164k25437749
Somehow, when I tested this, it seems that the NewLine-line is larger than the "standard" line... If I replace the NewLine command in the A node with \, then distance of both lines is smaller although it should be the same?
– SampleTime
Nov 15 '18 at 22:25
add a comment |
Somehow, when I tested this, it seems that the NewLine-line is larger than the "standard" line... If I replace the NewLine command in the A node with \, then distance of both lines is smaller although it should be the same?
– SampleTime
Nov 15 '18 at 22:25
Somehow, when I tested this, it seems that the NewLine-line is larger than the "standard" line... If I replace the NewLine command in the A node with \, then distance of both lines is smaller although it should be the same?
– SampleTime
Nov 15 '18 at 22:25
Somehow, when I tested this, it seems that the NewLine-line is larger than the "standard" line... If I replace the NewLine command in the A node with \, then distance of both lines is smaller although it should be the same?
– SampleTime
Nov 15 '18 at 22:25
add a comment |
This is discussed at length in the pgfmanual on p. 65. The upshot is that you can add a suitable text depth
.
documentclass[crop,tikz]{standalone}
begin{document}
usetikzlibrary{positioning,calc}
tikzset{block/.style={draw, rectangle, minimum height=1cm, minimum width=1cm,
outer sep=0pt,text height=3ex,text depth=.25ex}}
begin{tikzpicture}
node [block,align=center](A) { double \ type };
node [block,align=center,right=1.5cm of A](B) {single \ type };
draw[red] (A.west) -- (B.east);
end{tikzpicture}
end{document}
The red line is only to guide the eye.
add a comment |
This is discussed at length in the pgfmanual on p. 65. The upshot is that you can add a suitable text depth
.
documentclass[crop,tikz]{standalone}
begin{document}
usetikzlibrary{positioning,calc}
tikzset{block/.style={draw, rectangle, minimum height=1cm, minimum width=1cm,
outer sep=0pt,text height=3ex,text depth=.25ex}}
begin{tikzpicture}
node [block,align=center](A) { double \ type };
node [block,align=center,right=1.5cm of A](B) {single \ type };
draw[red] (A.west) -- (B.east);
end{tikzpicture}
end{document}
The red line is only to guide the eye.
add a comment |
This is discussed at length in the pgfmanual on p. 65. The upshot is that you can add a suitable text depth
.
documentclass[crop,tikz]{standalone}
begin{document}
usetikzlibrary{positioning,calc}
tikzset{block/.style={draw, rectangle, minimum height=1cm, minimum width=1cm,
outer sep=0pt,text height=3ex,text depth=.25ex}}
begin{tikzpicture}
node [block,align=center](A) { double \ type };
node [block,align=center,right=1.5cm of A](B) {single \ type };
draw[red] (A.west) -- (B.east);
end{tikzpicture}
end{document}
The red line is only to guide the eye.
This is discussed at length in the pgfmanual on p. 65. The upshot is that you can add a suitable text depth
.
documentclass[crop,tikz]{standalone}
begin{document}
usetikzlibrary{positioning,calc}
tikzset{block/.style={draw, rectangle, minimum height=1cm, minimum width=1cm,
outer sep=0pt,text height=3ex,text depth=.25ex}}
begin{tikzpicture}
node [block,align=center](A) { double \ type };
node [block,align=center,right=1.5cm of A](B) {single \ type };
draw[red] (A.west) -- (B.east);
end{tikzpicture}
end{document}
The red line is only to guide the eye.
answered Nov 15 '18 at 20:55
marmotmarmot
90.7k4104195
90.7k4104195
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%2f460191%2falign-the-baselines-of-two-nodes-placed-side-by-side%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
shortstack{sinsmash{g}le \ type}
– Steven B. Segletes
Nov 15 '18 at 20:45