On peut faire de la façon suivante (il y a surement mieux).
On place la macro \LaTeX qui utilise les commandes TikZ dans un fichier `pgflibraryoptique.code.tex`. Le préfixe `pgflibrary` et le suffixe `.code.tex` semble obligatoire (c'est ce qui fait que le fichier est reconnu comme une bibliothèque tikz ?). `optique` est le nom que j'ai choisi pour ma bibliothèque et que je dois alors utiliser pour l'appel.
\newcommand{\lentille}[1]{%
\draw[help lines] (-5,-#1-2cm) grid (5,#1+2cm);
\draw[<->,>=stealth,line width=2pt] (0,-#1) -- (0,#1);
}
Il faut ensuite placer ce fichier de library TikZ dans un dossier où il sera trouvé par le compilateur \LaTeX. Deux possibilités :
1) Dans le même dossier que le fichier \LaTeX qui utilise la bibliothèque (la recherche commence par ce dossier). Mais ce n'est pas une solution très flexible et il faut recopier le fichier de bibliothèque à chaque fois qu'on change de dossier pour le fichier teX qui utilise la bibliothèque.
2) Dans une structure de répertoire TeX TDS (TeX Directory Structure) d'un dossier racine TEXMF (TEXMF Root Directory) personnel. Pour le TEXMF on crée un répertoire sur le disque *d'un nom qu'on choisit librement*. Avec MiKTeX, la console permet de désigner ce dossier comme un TEXMF personnel. Il sera alors placé par défaut avant les autres TEXMF de MiKTeX, et donc la recherche de la bibliothèque se fera dans notre TEXMF personnel avant ceux par défaut de MiKTeX. Il ne faut donc pas donner comme nom pour notre bibliothèque personnelle le nom d'une bibliothèque tikz déjà existante, car sinon notre bibliothèque masquera la bibliothèque de TiKZ.
Pour respecter la structure de répertoire TeX TDS, il suffit de respecter les noms des dossiers et sous-dossier préconisé dans le dossier TEXMF qu'on a créé.
https://miktex.org/kb/tds[Qu'est ce que la TDS][1]
Il faut au minimum le dossier `TEXMF\tex\`
Apparemment dès que le fichier de bibliothèque `pgflibraryoptique.code.tex` est copié dans `TEXMF\tex` cela fonctionne. Mais pour respecter davantage l'organisation de la TDS, j'ai copié le fichier `pgflibraryoptique.code.tex` dans `TEXMF\tex\generic\pgf\libraries, `TEXMF\tex\generic\pgf\libraries`, ce qui correspond au dossier des bibliothèques TiKZ dans le TEXMF de MiKTeX d'après ce que j'ai vu.
Avec la console j'ai désigné le dossier `D:\domin\Documents\MyTexMF\` comme étant mon TEXMF personnel, donc finalement j'ai placé mon fichier de bibliothèque personnel `pgflibraryoptique.code.tex` dans le dossier
\D:\domin\Documents\MyTexMF\tex\generic\pgf\libraries
Ceci étant fait fait la bibliothèque personnelle TikZ est disponible pour un appel avec la commande `\usetikzlibrary{optique}`
\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{optique}
\begin{document}
\begin{tikzpicture}[]
\lentille{1cm}
\end{tikzpicture}
\end{document}
La macro utilisant des commandes TiKZ, elle n'est utilisable *que* dans un environnement TikZ. Si on avait mis l'environnement dans la macro, on pourrait utiliser directement la commande sans environnement TikZ.
![alt text][2]
Remarque : Le code ne marche pas dans Overleaf, puisque Overleaf ne connait pas cette bibliothèque personnelle.
[1]: https://miktex.org/kb/tds
[2]: https://texnique.fr/osqa/upfiles/appel_personal_library_1.png