Vos propres commandes avec \newcommand
Écrivez \newcommand{\name}{replacement} dans le préambule, avec [n] pour les arguments #1 à #n ; dès lors, \name est remplacé par sa définition, dans le texte comme dans les maths.
Une commande sans arguments
Une commande évite de retaper du texte et garde une notation cohérente. Définissez-la une fois dans le préambule et utilisez-la partout.
Raccourcis pour des ensembles et un nom de produit
\documentclass{article}
\usepackage{amssymb}
\newcommand{\R}{\mathbb{R}}
\newcommand{\product}{Scissor LaTeX}
\begin{document}
Every $x \in \R$ has a square $x^2 \ge 0$.
This page was typeset by \product.
\end{document}Arguments et valeur par défaut
[n] après le nom indique combien d’arguments la commande prend ; dans la définition, ce sont #1, #2 et ainsi de suite. Un second crochet donne une valeur par défaut au premier argument, ce qui le rend facultatif.
Arguments et premier argument facultatif
\documentclass{article}
\newcommand{\vect}[1]{\mathbf{#1}}
\newcommand{\norm}[1]{\left\lVert #1 \right\rVert}
\newcommand{\greet}[2][Hello]{#1, #2!}
\begin{document}
The length of $\vect{v}$ is $\norm{\vect{v}}$.
\greet{Erika} \greet[Good morning]{John}
\end{document}Modifier une commande existante
\renewcommand remplace une commande qui existe déjà, et \providecommand n’en définit une que si elle n’existe pas encore. \newcommand sur un nom déjà pris provoque une erreur dans une installation TeX ; utilisez alors \renewcommand.
\renewcommand et \providecommand
\documentclass{article}
\renewcommand{\emph}[1]{\textbf{#1}}
\providecommand{\R}{\mathbb{R}}
\begin{document}
This is \emph{emphasised} in bold now, and $\R$ is defined.
\end{document}Noms d’opérateurs
Les noms de fonctions comme sin et log sont composés en romain avec le bon espacement. \DeclareMathOperator (amsmath) crée les vôtres ; la forme étoilée place les bornes en dessous dans les formules centrées, comme \max.
\DeclareMathOperator et sa forme étoilée
\documentclass{article}
\usepackage{amsmath}
\DeclareMathOperator{\Var}{Var}
\DeclareMathOperator*{\argmax}{arg\,max}
\begin{document}
\[
\Var(X) = \mathbb{E}\left[(X - \mu)^2\right],
\qquad
\hat{\theta} = \argmax_{\theta} L(\theta)
\]
\end{document}Vos propres environnements
\newenvironment{name}[n]{before}{after} définit un environnement : le code « before » s’exécute à \begin{name} et le code « after » à \end{name}. Les arguments peuvent être utilisés dans la partie « before ».
Un environnement avec un argument
\documentclass{article}
\newenvironment{task}[1]
{\par\noindent\textbf{Task #1.}\ }
{\par}
\begin{document}
\begin{task}{44}
Measure the rainfall every morning.
\end{task}
\end{document}Ce qui fonctionne
| Commande | Dans Scissor LaTeX | Remarques |
|---|---|---|
\newcommand, \renewcommand, \providecommand | Fonctionne | Jusqu’à 9 arguments, un premier argument facultatif avec valeur par défaut. Formes étoilées aussi. |
\DeclareRobustCommand | Fonctionne | Comme \newcommand. |
\newenvironment, \renewenvironment | Fonctionne | Avec arguments et valeur par défaut. |
\DeclareMathOperator, \DeclareMathOperator* | Fonctionne | |
\def\name{...}, \gdef, \edef, \xdef | En partie | Les définitions simples et les arguments de type #1 fonctionnent ; les paramètres délimités comme \def\pt(#1,#2){...} ne sont pas reconnus et donnent un résultat brouillé. |
\let\new\old | Fonctionne | |
\NewDocumentCommand, \RenewDocumentCommand (xparse) | Non pris en charge | La définition est abandonnée et la commande est signalée comme inconnue là où elle est utilisée. |
\DeclarePairedDelimiter (mathtools) | Fonctionne | |
\makeatletter, \makeatother | Accepté | Les commandes dont le nom contient @ ne sont pas exécutées. |
Les définitions sont développées avant la composition : une commande peut donc servir dans le texte, dans les maths, dans les légendes et dans les titres de section. Pour éviter les boucles, le développement s’arrête à une limite de sécurité, avec un message dans l’onglet Problèmes.
Commandes xparse
\NewDocumentCommand de xparse n’est pas lu. La définition est abandonnée et, là où la commande est utilisée, son nom est ignoré avec un message tandis que ses arguments restent dans le texte.
\NewDocumentCommand n’est pas pris en charge
\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand{\pair}{m m}{(#1, #2)}
\begin{document}
The pair \pair{a}{b} loses its parentheses and comma.
\end{document}Onglet Problèmes : Skipped 1 unknown command: \pair
Pour corriger cela, écrivez la même commande avec \newcommand{\pair}[2]{(#1, #2)}. Pour les arguments facultatifs, \newcommand avec une valeur par défaut couvre le cas courant.
Différences avec une installation TeX
Les manuels de xparse et mathtools sont sur CTAN : xparse, mathtools. Pour les opérateurs et les noms de fonctions, voir aussi Sommes, intégrales et noms de fonctions.
Questions et réponses
Comment définir une nouvelle commande en LaTeX ?
Écrivez \newcommand{\name}{text} dans le préambule. Ajoutez [2] après le nom pour deux arguments et utilisez #1 et #2 dans le texte.
Quelle est la différence entre \newcommand et \def ?
\newcommand vérifie que le nom est libre et prend en charge un argument facultatif. \def est la commande TeX de bas niveau ; elle écrase sans prévenir. Préférez \newcommand et \renewcommand.
\NewDocumentCommand fonctionne-t-il dans Scissor LaTeX ?
Non. Réécrivez ces commandes avec \newcommand, qui couvre les arguments obligatoires et un argument facultatif.
Chaque exemple de cette page est composé par Scissor LaTeX lors de la génération du site. Dernière mise à jour : 2026-11-07.