% needs %\usepackage{listings} %\usepackage{tikz} %\usetikzlibrary{fit,tikzmark} %\usetikzlibrary{arrows.meta} \lstset{basicstyle=\ttfamily, columns=flexible, escapechar=*, morecomment=[l]{\%},keepspaces=true, commentstyle=\color{green!50!black}\bfseries} \tikzset{ balloon/.style={ draw, fill=blue!20, opacity=0.4, inner xsep=4pt,inner ysep=2pt, rounded corners=2pt, %minimum height=15pt }, ref/.style={ very thick, -Latex,red }, iref/.style={ thick,dashed, -Latex,red } } \NewDocumentCommand\balloon{m}{% \node[fit={(pic cs:#1-first) (pic cs:#1-end) ([yshift=7pt]pic cs:#1-end)},balloon](#1){};} \begin{tikzpicture}[overlay,remember picture] \balloon{link} \balloon{structparent} \balloon{OBJR} \balloon{linkref} \balloon{structelem} \balloon{kid} \balloon{pnum} \balloon{pref} \draw[ref] (linkref)--(link); \draw[ref] (link)--(structparent.170); \draw[ref] (structparent.190)--(pnum); \draw[ref] (pnum)--(pref); \draw[ref] (pref)--(structelem); \draw[ref] (structelem)--(kid); \draw[ref] (kid)--(OBJR); \draw[ref] (OBJR)--(linkref); \end{tikzpicture} \begin{lstlisting}[name=OBJR] *\tikzmark{link-first}*18 0 obj*\tikzmark{link-end}* %Link Object << /Type /Annot /Subtype/Link /Rect [ 196.109 494.573 399.167 506.831 ] *\tikzmark{structparent-first}*/StructParent 16 *\tikzmark{structparent-end}* /A<> >> endobj *\tikzmark{OBJR-first}*19 0 obj*\tikzmark{OBJR-end}* %Object reference (OBJR) <> endobj *\tikzmark{structelem-first}*17 0 obj*\tikzmark{structelem-end}* %Structure Element << /Type /StructElem /S /Link /P 11 0 R /K [<> *\tikzmark{kid-first}*19 0 R*\tikzmark{kid-end}* ]>> endobj}; 5 0 obj %Parenttree << /Nums [... *\tikzmark{pnum-first}*16*\tikzmark{pnum-end}* *\tikzmark{pref-first}*17 0 R*\tikzmark{pref-end}* ...] >> endobj \end{lstlisting}