---
myst:
  html_meta:
    keywords: LaTeX, programmation, extensions, classes, écrire une classe,
              écrire une extension, créer une classe, créer une extension
---
# Comment créer une extension ?
Il n'y a rien de particulièrement extraordinaire dans les commandes 
que vous utilisez lors de l'écriture d'une extension :
- vous regroupez simplement un ensemble de commandes `\(re)newcommand` 
  et `\(re)newenvironment`. La question 
  "[](/2_programmation/macros/makeatletter_et_makeatother)" pourra d'ailleurs
  vous éviter une erreur sur la gestion du caractère `@` ;
- vous les enregistrez en un fichier `⟨mon-extension⟩.sty` ;
- et c'est fait !
Cependant, vos extensions pourront demander un peu plus de sophistication :
- des informations sur les commandes LaTeX utilisées pour cette tâche 
  se trouvent dans le document 
  *[Class and package programming guide](ctanpkg:clsguide)* (en PDF 
  [ici](texdoc:clsguide)) ;
- une bonne connaissance de TeX lui-même est importante et des livres 
  comme le [TeXbook](/1_generalites/documentation/livres/documents_sur_tex) 
  ou [TeX by topic](/1_generalites/documentation/livres/documents_sur_tex) 
  sont ici précieux. Dès lors, il vous sera possible d'utiliser 
  la source documentée de LaTeX comme matériel de référence. Cette source 
  peut être obtenue en compilant le fichier "[source2e.tex](ctanpkg:source2e)"
  ou en consultant directement sa [version PDF](texdoc:source2e) ;
- les [sources documentées](/1_generalites/documentation/documents/documents_extensions/fichiers_sources_dtx)
  (fichiers DTX) des extensions sont également une bonne aide.
:::{sources}
- [Learning to write LaTeX classes and packages](faquk:FAQ-writecls)
:::