In tikz a user would declare new layers using:
\pgfdeclarelayer{foo}
\pgfdeclarelayer{bar}
\pgfsetlayers{foo,bar}
My library needs to declare some layers (just 2 for now), but I'm afraid to have conflict with user layers. Indeed, \pgfsetlayers erases all previously created layers. How could I solve that, ideally transparently for the user?
MWE
\documentclass[10pt]{article}
\usepackage{geometry}
\usepackage{tikz}
% My library would declare
\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfsetlayers{background,main,foreground}
% The user would declare this, and erase above layers.
\pgfdeclarelayer{foo}
\pgfdeclarelayer{bar}
\pgfsetlayers{foo,bar} %% <-- erases background,main,foreground.
\begin{document}
% The user wants to draw
\begin{figure}
\begin{tikzpicture}
\begin{pgfonlayer}{bar}
\node[fill=green]{Hello};
\end{pgfonlayer}
\begin{pgfonlayer}{foo}
\node[fill=blue!50!white,circle] at (0.5,0) {Bye};
\end{pgfonlayer}
\end{tikzpicture}
\end{figure}
% The library wants to draw
\begin{figure}
\begin{tikzpicture}
\begin{pgfonlayer}{foreground}
\node[fill=green]{Hello};
\end{pgfonlayer}
\begin{pgfonlayer}{background}
\node[fill=blue!50!white,circle] at (0.5,0) {Bye};
\end{pgfonlayer}
\end{tikzpicture}
\end{figure}
\end{document}
\pgf@layerlistcontains your layers, you could also (re)add your layers, but imho if there are really various user layers it wouldn't e easy to decide where to add your layers exactly. Do you really need layers? – Ulrike Fischer Oct 08 '21 at 08:26