Je n'ai pas la solution complète (notamment en matière de dimensions), mais je pense avoir une bonne base fonctionnelle. La documentation hélas est assez pauvre, et indique spécifiquement que c'est réservé aux hackers TeX au début du chapitre 9.
Primo, je ne vois pas la commande `\pgfcircdeclarebipole` dans le code fourni dans la documentation (dans une version récente de celle-ci), mais `\pgfcircdeclarebipoleshape`. Il subsiste toutefois une trace de `\pgfcircdeclarebipole` en page 256 du manuel (version actuelle), je vais poser une issue sur le dépôt GitHub à ce sujet. Tout porte à croire que le nom a changé car sur [https://github.com/circuitikz/circuitikz/issues/183][1] (datant de 2019), l'auteur renvoie vers un extrait du manuel ([https://github.com/circuitikz/circuitikz/files/3077675/howtonewcomponent.pdf][2]) où cette fois-ci la commande de création du composant se faisait avec `\pgfcircdeclarebipole` (sans `shape` dans le nom, donc).
Deuxio, l'ancienne commande `\pgfcircdeclarebipole` prenait 6 arguments, la version actuelle `\pgfcircdeclarebipoleshape` prend 7 arguments, et dans votre code, votre `\pgfcircdeclarebipole` ne prend que 5 arguments, ce qui pose forcément problème.
Tertio, votre code (et le code d'exemple du manuel) comporte une commande avec `@` dans le nom (spécifiquement `\pgf@circ@res@up`). Il faut donc englober le tout dans un `\makeatletter` ... `\makeatother`.
Enfin, le manuel (mais c'est un peu caché, je l'admets, indique qu'il faut activer le nom du nouveau composant avec (pour l'exemple du manuel) : `\pgfcirc@activate@bipole@simple{l}{viscoe}`.
C'est ce dernier code (toujours à entourer de `\makeatletter` ... `\makeatother`) qui permet d'éviter de se retrouver avec : *I do not know the key '/tikz/generatorG'*.
Voici donc un code adapté (et limité : les dimensions notamment sont à adapter selon votre usage pour obtenir quelque chose de valide, ici le G est bien trop grand et couvre le cercle, à peine visible. Et les lignes ne sont pas connectés, ce qui n'est pas très utile dans le cadre d'un circuit électrique. Mais la « base » est fonctionnelle. J'ai conservé le nom *mechanicals* pour le premier argument de la commande `\pgfcircdeclarebipoleshape`, ce qui est totalement loufoque, évidemment (le dipole n'a rien de mécanique).
\documentclass{standalone}
\usepackage{circuitikz}
\makeatletter
% Déclaration d'un bipôle circulaire avec G au centre
\pgfcircdeclarebipolescaled{mechanicals}
{} % extra anchors
{\ctikzvalof{bipoles/damper/height}} % depth (under the path line)
{generatorG} % name
{\ctikzvalof{bipoles/damper/height}} % height (above the path line)
{\ctikzvalof{bipoles/damper/width}} % width
{
% Dessin du cercle
\pgfpathcircle{\pgfpoint{0}{0}}{.4\pgf@circ@res@up}
\pgfpathcircle{\pgfpoint{0}{0}}{1.15\pgf@circ@res@up}
\pgfusepath{draw}
% Lettre G
\pgftext{\normalsize\bfseries G}
}
\pgfcirc@activate@bipole@simple{l}{generatorG}
\makeatother
\begin{document}
\begin{circuitikz}
\draw (0,0) to[generatorG,l=Générateur] (3,0);
\end{circuitikz}
\end{document}
J'aurais volontiers joint le fichier d'image correspondant à la sortie (il est toujours agréable d'avoir une illustration) mais je suis accueilli par :
*Error uploading file. Please contact the site administrator. Thank you. 'ascii' codec can't encode characters in position 42-43: ordinal not in range(128)*.
(pour un fichier PNG de moins de 40 ko).
Edit : finalement, le moteur de génération du PDF intégré au site peut remplacer l'image jointe, donc ce n'est pas si gênant.
### Edit 2 : j'ai finalement une version plus propre au niveau des dimensions.
J'ai aussi choisi de tracer le trait du cercle avec l'épaisseur qui est celle du dipole `esource` (voir page 78 du manuel actuel). Supprimez la ligne `\pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}` si vous préférez un tracé plus fin.
\documentclass{standalone}
\usepackage{circuitikz}
\makeatletter
% Déclaration d'un bipôle circulaire avec G au centre
\pgfcircdeclarebipolescaled{sources}
{} % extra anchors
{\ctikzvalof{bipoles/esource/height}} % depth (under the path line)
{generatorG} % name
{\ctikzvalof{bipoles/esource/height}} % height (above the path line)
{\ctikzvalof{bipoles/esource/width}} % width
{
% Dessin du cercle
\pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
\pgfpathcircle{\pgfpoint{0}{0}}{\pgf@circ@res@up}
\pgfusepath{draw}
% Lettre G
\pgftext{\normalsize\bfseries G}
}
\pgfcirc@activate@bipole@simple{l}{generatorG}
\makeatother
\begin{document}
\begin{circuitikz}
\draw (0,0) to[generatorG,l=Générateur] (3,0);
\end{circuitikz}
\end{document}
[1]: https://github.com/circuitikz/circuitikz/issues/183
[2]: https://github.com/circuitikz/circuitikz/files/3077675/howtonewcomponent.pdfhttps://github.com/circuitikz/circuitikz/files/3077675/howtonewcomponent.pdf