%% LaTeX2e file `tmp-gen-anatomy-of-a-while-loop.tex' %% generated by the `filecontents' environment %% from source `codeanatomy.lstlisting' on 2025/10/19. %% \lstset{escapeinside={!}{!}} \begin{lrbox}{\mycodebox} \begin{lstlisting} !\cPart{i}{\bgcode{int power = 1;}}\phantom{\rule[-2ex]{0.1ex}{0.1ex}}! while ( !\cPart{c}{power <= n/2}! ) !\cPart{po}{\{}! !\cPart{b}{power = 2*power;}! !\cPart{pc}{\}}! \end{lstlisting} \end{lrbox} \begin{tikzpicture}[remember picture] % {[on background layer]\draw[code grid debug] (-2.5,-0.5) grid (2.5,2.5);} \node(code) [anatomy] at (0,0) {\usebox\mycodebox}; % Annotation \codeAnnotation{iText} (-1,3.25) {initialization is a\\separate statement} \codeAnnotation{cText} (3.5,3) {loop-\\continuation\\condition} \codeAnnotation{pText} (-1.5,0.5) {braces are\\optional\\when body\\is a single\\statement} \codeAnnotation{bText} (2.125,-0.5) {body} % Arrows \draw[->,annotation] (iText) -- (i.north west); \draw[->,annotation] (cText) -- (c); \draw[->,annotation] (bText) -- (b); \draw[->,annotation] (pText) -- (po); \draw[->,annotation] (pText) -- (pc); \end{tikzpicture}