TransWikia.com

How can I get the height of a TikZ node and store it in a length?

TeX - LaTeX Asked by TobiBS on July 24, 2020

I need to know the height of a TikZ node and store it in a length so it can later be used by other commands and reference this exact dynamic length.

So here is an MWE that illustrates what I want to do, but of course this is not how totalheightof works, it measures the height of the text, but I want to get the height of the node:

documentclass{article}

newlength{heightOfMyNode}
usepackage{tikz,calc}


begin{document}
begin{tikzpicture}
node(mynode)[text width=3cm]{This is a node that varies in height and I need to know the hieght and store it in a length};
end{tikzpicture}
setlength{heightOfMyNode}{totalheightof{node.height}}

And here I want to use the length for a rule{heightOfMyNode}{2pt}
end{document}

Looking forward to your suggestions, especially direct TikZ/PGF solutions that I overlooked, maybe with veclen?

One Answer

Well, I suppose you just want to know the width and height of box containing a node that may be transformed. Then it is easy to calculate the width and height of the bounding box.

documentclass[tikz, border=1cm]{standalone}
usetikzlibrary{fit, calc}
usepackage{xparse}
makeatletter
NewDocumentCommand {getnodedimen} {O{nodewidth} O{nodeheight} m} {
  begin{pgfinterruptboundingbox}
  begin{scope}[local bounding box=bb@temp]
    node[inner sep=0pt, fit=(#3)] {};
  end{scope}
  path ($([email protected] east)-([email protected] west)$);
  end{pgfinterruptboundingbox}
  pgfgetlastxy{#1}{#2}
}
makeatother

begin{document}
begin{tikzpicture}
  node(mynode)[text width=3cm, draw=red]{This is a node that varies in height and I need to know the hieght and store it in a length};
  getnodedimen{mynode}
  node[draw, minimum height=nodeheight, minimum width=nodewidth] at (4, 0) {};
end{tikzpicture}
end{document}

enter image description here

Correct answer by ZhiyuanLck on July 24, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP