Skip to content

Instantly share code, notes, and snippets.

@leingang
Last active April 5, 2025 17:51
Show Gist options
  • Save leingang/a3b2ab6761cc4b64a4eeb4c74382f24e to your computer and use it in GitHub Desktop.
Save leingang/a3b2ab6761cc4b64a4eeb4c74382f24e to your computer and use it in GitHub Desktop.
Label TikZ spath3 components by their number
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{intersections}
\usetikzlibrary{spath3}
\tikzset{
every spath component/.style={draw,->,thick,green},
every spath component label/.style={every spath component,draw=none,fill=white, fill opacity=1, circle,text opacity=1,
node contents={\spathname\spathcomponentnumber}
},
spath/label components/.code={
\tikzset{
spath/get components of={#1}\cpts}
\def\spathname{#1}
\foreach[count=\spathcomponentnumber] \cpt in \cpts {
\node[at={(spath cs:{\cpt} .5)},
every spath component label];
}
},
spath/render components with labels/.style={
render components={#1},
label components={#1}
}
}
\begin{document}
\begin{tikzpicture}
\draw[spath/save=A] circle(2cm);
\draw[spath/save=B] ellipse(3cm and 1cm);
\tikzset{
spath/.cd,
split at intersections={A}{B},
label components=A,
/tikz/every spath component/.append style={red},
render components with labels=B,
}
\end{tikzpicture}
\end{document}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment