====== Commandes et environnements ======

FIXME Compléter (et sans doute réorganiser) le sommaire.

FIXME Indiquer systématiquement les solutions avec \NewDocumentCommand.

===== Bonnes pratiques de programmation =====

[[https://faq.latex-fr.net/2_programmation/macros/utiliser_des_commandes_plain_en_latex|Pourquoi éviter d'utiliser des primitives TeX ou des commandes Plain TeX avec LaTeX ?]] (en particulier : [[https://faq.latex-fr.net/2_programmation/macros/preferer_newcommand_a_def|Pourquoi préférer \newcommand à \def?]])

[[https://faq.latex-fr.net/2_programmation/macros/bien_nommer_ses_macros_et_environnements|Comment bien nommer ses commandes et environnements ?]]

[[https://faq.latex-fr.net/2_programmation/macros/caractere_pourcent_dans_les_macros|Pourquoi y a-t-il tant de “%” dans le code des macros ?]] (ou : comment bien utiliser le signe ''%'' pour éviter d'introduire des espaces indésirables dans son document)


===== Définir de nouvelles commandes avec les outils fournis par LaTeX =====

[[https://faq.latex-fr.net/2_programmation/macros/cette_commande_est_elle_definie|Comment tester si une commande est déjà définie ?]]

[[https://faq.latex-fr.net/2_programmation/macros/commande_newcommand|(Re)définir des commandes basiques avec \newcommand et \renewcommand]]

[[https://faq.latex-fr.net/2_programmation/macros/etoiler_ses_newcommand|Quand doit-on utiliser la version étoilée de \newcommand ?]]

[[https://faq.latex-fr.net/2_programmation/macros/arguments_optionnels_comme_pour_section|Comment définir des arguments optionnels comme ceux de \section ?]]\\
Concerne les arguments optionnels qui prennent comme valeur par défaut un des arguments fournis par l'utilisateur.
Pour les arguments optionnels dont la valeur par défaut est toujours la même, voir [[https://faq.latex-fr.net/2_programmation/macros/commande_newcommand|ici]].

[[https://faq.latex-fr.net/2_programmation/macros/commande_etoilee3|Comment définir une commande étoilée ?]]\\
FIXME fusionner avec [[https://faq.latex-fr.net/2_programmation/macros/commande_etoilee|Comment définir une commande étoilée?]]
et [[https://faq.latex-fr.net/2_programmation/macros/definir_des_variantes_etoilees|Définir des variantes étoilées des commandes et environnements]]

[[https://faq.latex-fr.net/2_programmation/macros/makeatletter_et_makeatother|À quoi servent “\makeatletter” et “\makeatother” ?]]

[[https://faq.latex-fr.net/2_programmation/macros/commande_newenvironment|Définir des environnements avec \newenvironment et \renewenvironment]]


===== Définir de nouvelles commandes avec les primitives de TeX =====

[[https://faq.latex-fr.net/2_programmation/macros/cette_commande_est_elle_definie|Comment tester si une commande est déjà définie ?]]

[[https://faq.latex-fr.net/2_programmation/macros/que_sont_les_macros|Comment définir des commandes basiques avec les primitives de TeX ?]]

[[https://faq.latex-fr.net/2_programmation/macros/definir_une_macro_a_partir_d_un_argument|Comment créer une commande qui permet de définir de nouvelles commandes en les nommant d'après un argument ?]]

[[https://faq.latex-fr.net/2_programmation/macros/delimiteurs_speciaux|Comment utiliser d'autres délimiteurs que les crochets et les accolades dans une commande ?]]

===== Comprendre la définition des macros TeX ou LaTeX existantes =====

[[https://faq.latex-fr.net/2_programmation/macros/obtenir_la_definition_des_commandes_latex|Obtenir la définition d'une commande]]

[[https://faq.latex-fr.net/2_programmation/macros/makeatletter_et_makeatother|À quoi servent “\makeatletter” et “\makeatother” ?]] (ou : à quoi sert l'arobase dans le nom de certaines commandes?)

[[https://faq.latex-fr.net/2_programmation/macros/abreviations_internes_de_latex|Que signifient certaines commandes sous forme abrégée ?]]

===== Problèmes généraux =====

  * [[https://faq.latex-fr.net/2_programmation/macros/surcharger_une_commande|Comment enrichir la définition d'une commande déjà existante sans la redéfinir entièrement ?]]
  * [[https://faq.latex-fr.net/2_programmation/macros/definir_une_macro_a_l_interieur_d_une_autre_macro|Comment définir des commandes à l'intérieur de la définition d'autres commandes ?]]
  * [[https://faq.latex-fr.net/2_programmation/macros/definir_une_macro_a_plus_de_9_arguments|Comment dépasser la limite des 9 arguments pour une commande ?]]
  * [[https://faq.latex-fr.net/2_programmation/macros/arguments-cle-valeur|Comment définir des arguments clé-valeur ?]]
  * [[https://faq.latex-fr.net/2_programmation/macros/commande_special|Passer directement une commande à un pilote avec \special]]

===== Trucs et astuces =====

[[https://faq.latex-fr.net/2_programmation/macros/ignorespacesafterend|Comment éviter l'espace insérée après un environnement personnalisé?]]

[[https://faq.latex-fr.net/2_programmation/macros/afficher_les_deux_derniers_chiffres_de_l_annee|Comment n'afficher que les deux derniers chiffres de l'année ?]]

[[https://faq.latex-fr.net/2_programmation/macros/comparer_une_chaine_a_jobname|Comment comparer \jobname à quelque chose ?]]

[[https://faq.latex-fr.net/2_programmation/macros/commande_ensuremath|Forcer l'utilisation du mode mathématique avec \ensuremath]]




