Définitions
LaTeX prend en charges la fabrication de nouvelles commandes de bien des genres.

\newcommand & \renewcommand
\newcommand définit une nouvelle commande, et \renewcommand la redéfinit.
Synopsis :

  \newcommand{\cmd}[nargs][optargdéfaut]{défn}
\renewcommand{\cmd}[nargs][optargdéfaut]{défn}
  \newcommand*{\cmd}[nargs][optargdéfaut]{défn}
\renewcommand*{\cmd}[nargs][optargdéfaut]{défn}

La forme étoilée (en *) de ces commandes exige que les arguments ne contiennent pas de paragraphes de texte (la commande n’est pas \long, dans la terminologie de TeX de base).
cmd 	Obligatoire ; \cmd est le nom de la commande. Pour \newcommand, il ne doit pas être déja défini et ne doit pas commencer avec \end ; pour \renewcommand, il doit être déja défini.
nargs 	Optionnel ; un entier compris entre 1 et 9 spécifiant le nombre d’arguments que commande peut prendre, y compris un éventuel argument optionnel. Si cet argument n’est pas présent, alors la spécification par défaut est que la commande ne prend aucun argument. Lorsque on redéfinit une commande, la nouvelle version peut prendre un nombre différent d’arguments par rapport à l’ancienne.
optargdéfaut 	Optionnel ; si cet argument est present, alors le premier argument de la commande \cmd en définition est optionnel, et sa valeur par défaut est optargdéfaut (qui peut être une chaîne vide). Si cet argument n’est pas présent, alors \cmd ne prend pas d’argument optionnel.
C’est à dire que si \cmd est utilisé avec des crochets à la suite, comme dans \cmd[maval], alors au sein de défn le premier paramètre positionnel #1 se développe en maval. Par contre si \cmd est appelé sans crochet à la suite, alors au sein de défn le paramètre positionnel #1 se développe en la valeur par défaut optargdéfaut. Dans tous les cas, tout argument obligatoire sera désigné en commençant par #2.
Omettre [maval] dans un appel n’est pas la même chose qu’avoir les crochets ne contenant rien, comme dans []. Dans le premier cas le paramètre #1 se développe en optargdéfaut ; alors que dans le secon #1 se développe en une chaîne vide.
défn 	Le texte par lequel substituer chaque occurrence de \cmd ; le paramètre positionnel #n au sein de défn est remplacée par le texte passé comme nième argument.
TeX ignore les espaces dans le code source à la suite d’une commande (ou de toute séquence de contrôle), comme dans ‘\cmd ’. Si vous désirez une espace réellement à cet endroit, une solution est de taper {} après la commande (‘\cmd{} ’), et un autre est d’utiliser un espace de contrôle explicite (‘\cmd\ ’).
Un exemple simple de définition d’une nouvelle commande : \newcommand{\JM}{Jean Martin} a pour effet le remplacement de l’abréviation \JM par le texte plus long de la définition.
La redéfinition d’une commande existante est similaire : \renewcommand{\symbolecqfd}{{\small CQFD}}.
Voici la définition d’une commande avec un argument obligatoire :

\newcommand{\defref}[1]{Définition~\ref{#1}}

Alors, \defref{def:basis} se développe en Définition~\ref{def:basis}, ce qui en fin de compte se développera en quelque-chose du genre de ‘Définition~3.14’.
Un exemple avec deux arguments obligatoires : \newcommand{\nbym}[2]{$#1 \times #2$} est invoqué comme \nbym{2}{k}.
Un exemple avec un argument optionnel :

\newcommand{\salutation}[1][Madame, Monsieur]{#1,}

Alors, \salutation donne ‘Madame, Monsieur,’ alors \salutation[Cher Jean] donne ‘Cher Jean,’. Et \salutation[] donne ‘,’.
Les accolades autour de défn ne définissent pas un groupe, c.-à-d. qu’elle ne délimitent pas la portée du résultat du développement de défn. Ainsi la définition \newcommand{\nomnavire}[1]{\it #1} est problématique ; dans cette phrase

Le \nomnavire{Monitor} rencontra le \nomnavire{Merrimac}.

les mots ‘rencontra le’ sont mis incorrectement en italique. Une paire supplémentaire d’accolades est nécessaire, comme cela : \newcommand{\nomnavire}[1]{{\it #1}}. Ces accolades font partie de la définition et par conséquent définissent bien un groupe.

\newcounter
Synopsis :

\newcounter{nomcompteur}[super]

La commande \newcounter définit un nouveau compteur nommé nomcompteur. Le nouveau compteur est initialisé à zéro.
Quand l’argument optionnel [super] est fourni, le compteur nomcompteur est réinitialisé à chaque incrémentation du compteur nommé super.
Voir Counters, pour plus d’information à propos des compteurs.

\newlength
Synopsis :

\newlength{\arg}

La commande \newlength définit l’argument obligatoire comme une commande de longueur avec une valeur de 0mm. L’argument doit être une séquence de contrôle, comme dans \newlength{\foo}. Une erreur se produit si \foo est déjà défini.
Voir Lengths, pour comment régler la nouvelle longeur à une valeur non nulle, et pour plus d’information à propos des longueurs en général.

\newsavebox
Synopsis :

\newsavebox{\cmd}

Définit \cmd pour se référer à un nouveau bac pour stocker des boîtes. Une telle boîte sert à détenir du matériel composé, pour l’utiliser plusieurs fois (voir Boxes) ou pour le mesurer ou le manipuler. Le nom \cmd doit commencer par une contr’oblique, et ne doit pas être déjà défini.
L’allocation d’une boîte est globale. Cette commande est fragile (voir \protect).

\newenvironment & \renewenvironment
Ces commandes définissent ou redéfinissent un environnement env, c.-à-d., \begin{env} corps \end{env}.
Synopsis :

  \newenvironment{env}[nargs][argoptdéfaut]{défdébut}{déffin}
  \newenvironment*{env}[nargs][argoptdéfaut]{défdébut}{déffin}
\renewenvironment{env}[nargs]{défdébut}{déffin}
\renewenvironment*{env}[nargs]{défdébut}{déffin}

La forme étoilée de ces commandes exige que les arguments (à ne pas confondre avec le corps de l’environnement) ne contiennent pas de paragraphes de texte.
env 	Obligatoire ; le nom de l’environnement. Il est constitué seulement de lettres ou du caractère astérisque *, et donc ne commence pas par une contr’oblique \. Il ne doit pas commencer par la chaîne end. Pour \newenvironment, env ne doit pas être le nom d’un environnement déjà existant, et la commande \env ne doit pas être définie. Pour \renewenvironment, env doit être le nom d’un environnement déjà existant.
nargs 	Optionnel ; un entier de 0 à 9 indiquant le nombre d’arguments que l’environnement attend. Quand l’environnement est utilisé, ces arguments apparaissent après le \begin, comme dans \begin{env}{arg1}…{argn}. Si cet argument n’est pas présent, alors par défaut l’environment n’attend pas d’argument. Lorsqu’on redéfinit un environment, la nouvelle version peut prendre un nombre différent d’arguments que la précédente.
argoptdéfaut 	Optionnel ; si cet argument est présent alors le premier argument de l’environnement en définition est optionnel, et sa valeur par défaut est argoptdéfaut (éventuellement une chaîne vide). Si cet argument n’est pas présent alors l’environnement ne prend pas d’argument optionnel.
c.-à-d. que si [argoptdéfaut] est présent dans la définition de l’environnement, et que \begin{env} est utilisé avec des crochets à la suite, comme dans \begin{env}[maval], alors, au sein de défdébut, le paramètre positionnel #1 se développe en maval. Si par contre \begin{env} est appéelé sans être suivi de crochet, alors, au sein de défdébut, le paramètre positionnel #1 se développe en la valeur par défaut, c.-à-d. optargdefault. Dans les deux cas, le premier paramètre positionnel faisant référence à argument obligatoire est #2.
Omettre [maval] dans l’appel est différent d’avoir des crochets sans contenu, c.-à-d. []. Dans le premier cas #1 se développe en argoptdéfaut, et dans le second en une chaîne vide.
défdébut 	Obligatoire ; le texte qui est développé à toute occurrence de \begin{env} ; au sein de défdébut, le nième paramètre positionnel, (c.-à-d. #n), est remplacé au sein de défdébut par le texte du nième argument.
déffin 	Obligatoire ; le texte développé à toute occurrence de \end{env}. Il ne doit contenir aucun paramètre positionnel, ainsi #n ne peut pas être utilisé ici (mais voyez l’exemple final ci-après).
Tous les environnements, c’est à dire le code de défdébut, le corps de l’environnement, et le code déffin, sont traités au sein d’un groupe. Ansi, dans le premier exemple ci-dessous, l’effet de \small est limité à la citation et ne s’étend pas au matériel qui suit l’environnement.
Cet exemple dont un environnement semblable à quotation de LaTeX à ceci près qu’il sera composé dans une taille de police plus petite :

\newenvironment{smallquote}{%
  \small\begin{quotation}
}{%
  \end{quotation}
}

Celui-ci montre l’utilisation des arguments ; cela donne un environnement de citation qui affiche l’auteur :

\newenvironment{citequote}[1][Corneille]{%
  \begin{quotation}
  \noindent\textit{#1}:
}{%
  \end{quotation}
}

Le nom de l’auteur est optionnel, et vaut par défaut ‘Corneille’. Dans le document, utilisez l’environnement comme ceci :

\begin{citequote}[Clovis, roi des Francs]
  ...
\end{citequote}

Ce dernier exemple montre comment sauvegarder la valeur d’un argument pour l’utiliser dans déffin, dans ce cas dans une boîte (voir \sbox).

\newsavebox{\quoteauthor}
\newenvironment{citequote}[1][Corneille]{%
  \sbox\quoteauthor{#1}%
  \begin{quotation}
}{%
  \hspace{1em plus 1fill}---\usebox{\quoteauthor}
  \end{quotation}
}

\newtheorem
Définit une nouvel environnement simili-théorème. Synopsis :

\newtheorem{nom}{titre}[numéroté_au_sein_de]
\newtheorem{nom}[numéroté_comme]{titre}

Ces deux commandes crééent un environnement simili-théorème nom. Utiliser la première des deux formes,

\newtheorem{nom}{titre}[numéroté_au_sein_de]

avec l’argument optionnel après le second argument obligatoire, crée un environnement dont le compteur est subordonné au compteur déjà existant numéroté_au_sein_de, c.-à-d. qui est réinitialisé à it will chaque réinitialisation de numéroté_au_sein_de.
Utiliser la seconde forme,

\newtheorem{nim}[numéroté_comme]{titre}

avec l’argument optionnel entre les deux arguments obligatoire, crée une environnement dont le compteur partage le compteur déjà défini numéroté_comme.
Vous pouvez spécifier l’un seul de numéroté_au_sein_de et numéroté_comme, ou ni l’un ni l’autre, mais non les deux à la fois.
Cette commande crée un compteur nommé name. De plus, à moins que l’argument optionnel numéroté_comme soit utilisé, la valeur courrante de \ref est celle de \thenuméroté_au_sein_de (voir \ref).
Cette déclaration est globale. Elle est fragile (voir \protect).
nom 	Le nom de l’environnement. Il ne doit pas commencer avec une contr’oblique (‘\’). Il ne doit pas être le nom d’un environnement déjà exisant ; en fait le nom de commande \nom ne doit pas être déjà défini de quelque façon que ce soit.
titre 	Le texte imprimé au début de l’environnement, avant le numéro. Par exemple, ‘Théorème’.
numéroté_au_sein_de 	Optionnel ; le nom d’un compteur déjà défini, d’ordinaire une unité sectionnelle telle que chapter ou section. Lorsque le compteur numéroté_au_sein_de est re-initialisé, alors le compteur de l’environnement nom l’est aussi.
Si cet argument optionnel est omis alors la commande \thenom est définie comme \arabic{nom}.
numéroté_comme 	Optionnel ; le nom d’un environement simil-théorème déjà défini. Le nouvel environnement se numéroté en séquence avec numéroté_comme.
En l’absence des arguments optionnels les environnement sont numérotés en séquence. L’exemple suivant a une déclaration dans le préambule qui résulte en ‘Définition 1’ et ‘Définition 2’ en sortie.

\newtheorem{defn}{Définition}
\begin{document}
\section{...}
\begin{defn}
  Première déf.
\end{defn}

\section{...}
\begin{defn}
  Seconde déf.
\end{defn}

Parce que l’exemple suivant spécifie section comme argument optionnel numéroté_au_sein_de à \newtheorem, l’exemple, reprenant le même corps de document que l’exemple précédent, donne ‘Définition 1.1’ et ‘Définition 2.1’.

\newtheorem{defn}{Definition}[section]
\begin{document}
\section{...}
\begin{defn}
  Première déf.
\end{defn}

\section{...}
\begin{defn}
  Seconde déf.
\end{defn}

Dans l’exemple suivant il y a deux déclarations dans le préambule, la seconde desquelle appelle le nouvel environnement thm pour utilise le même compteur que defn. Cela donne ‘Définition 1.1’, suivi de ‘Théorème 2.1’ et ‘Définition 2.2’.

\newtheorem{defn}{Définition}[section]
\newtheorem{thm}[defn]{Théorème}
\begin{document}
\section{...}
\begin{defn}
  Première déf.
\end{defn}

\section{...}
\begin{thm}
  Premier théorème
\end{thm}

\begin{defn}
  Seconde déf.
\end{defn}
\section{...}

\newfont: définit une nouvelle police (obsolète)
\newfont, desormais obsolète, définit une commande qui commute la police de caractère. Synopsis :

\newfont{\cmd}{description_police}

Ceci définit une séquence de contrôle \cmd qui change la police courante. LaTeX cherche sur votre système un fichier nommé nompolice.tfm. La séquence de contrôle ne doit pas être déjà définie. Elle doit commencer par une contr’oblique (‘\’).
Cette commande est obsolète. c’est une commande de bas niveau pour mettre en place une police individuelle. De nos jours, les polices sont pratiquement toujours définies en familles (ce qui vous permet, par exemple, d’associer un gras et un romain) au travers de ce qu’il est convenu de nommer le « Nouveau Plan de Sélection de Polices de caractère », soit en utilisant des fichier .fd ou à travers l’utilisation d’un moteur qui sait accéder au système de polices de caractère, tel que XeLaTeX (voir Les moteurs TeX).
Mais puisque cela fait partie de LaTeX, voici l’explication : le paramètre description_police consiste en un nompolice et une clause at optionnelle ; celle-ci peut avoir soit la forme at dimen ou scaled facteur, où un facteur de ‘1000’ signifie aucune dilatation/contraction. Pour l’usage de LaTeX, tout ce que ceci fait est de dilater ou contracter le caractère et les autre dimension relative à la taille de conception de la police, ce qui est une valeur définie dans le fichier en .tfm.
Cet exemple défnit deux polices équivalente et compose quelques caractères dans chacune d’elles :

\newfont{\testpoliceat}{cmb10 at 11pt}
\newfont{\testpolicedilatee}{cmb10 scaled 1100}
\testpoliceat abc
\testpolicedilatee abc

\protect
Toutes les commandes de LaTeX sont soit fragiles soit robustes. Les notes en bas de page, les saut de ligne, toute commande prenant un argument optionnel, et bien d’autres, sont fragiles. Une commande fragile peut se disloquer et causer une erreur lorsque elle est utilisée au sein de l’argument de certaines commandes. Pour empécher la dislocation de ces commandes l’une des solutions est de les précéder de la commande \protect.
Par exemple, lorsque LaTeX execute la commande \section{nom-rubrique} il écrit le texte nom-rubrique dans le fichier auxiliaire .aux, de sorte à pouvoir le tirer de là pour l’utiliser dans d’autres partie du document comme la table des matières. On appelle argument mouvant tout argument qui est développé en interne par LaTeX sans être directement composé en sortie. Une commande est dite fragile si elle se développe pendant ce processus en un code TeX non valide. Certains exemples d’arguments mouvants sont ceut qui apparaissent au sein des commande \caption{...} (voir figure), dans la commande \thanks{...} (voir \maketitle), et dans les expression en @ des environnements tabular et array (voir tabular).
Si vous obtenez des erreurs étranges de commandes utilisées au sein d’arguments mouvants, essayez des les précéder d’un \protect. Il faut un \protect pour chacune des commandes fragiles.
Bien qu’en général la commande \protect ne fait pas de mal, les commandes de gestion de longueurs sont robustes et ne devraient pas être précédées d’une commande \protect. Une commande \protect ne peut pas non plus être utilisée au sein de l’argument d’une commande \addtocounter ou \setcounter.
Dans l’exemple qui suit la commande \caption produit une erreur mystérieuse

\begin{figure}
  ...
  \caption{Company headquarters of A\raisebox{1pt}{B}\raisebox{-1pt}{C}}
\end{figure}

Dans l’exemple suivant la commande \tableofcontents produit une erreur à cause du \(..\) dans le titre de section qui se développe en code incorrect TeX dans le fichier .toc. Vous pouvez résoudre ceci en remplaçat \(..\) par \protect\(..\protect\).

\begin{document}
\tableofcontents
...
\section{Einstein's \( e=mc^2 \)}
...