1.  Commandes personnalisées

Pour éviter de saisir des combinaisons de commandes fréquentes ou complexes, LATEX propose grâce à la commande newcommand de définir de nouvelles commandes qui fonctionneront comme les macros des traitements de texte classiques.

\newcommand{\ssi}{si et seulement si }
Un entier est pair \ssi il est divisible par 2.


On peut aussi créer des commandes pour le mode mathématique:

\newcommand{\R}{\mathbb R}
\newcommand{\RR}{\R \times \R}
le symbole $\R$ et le produit $\RR$


Mieux vaut ne pas spécifier le mode mathématique dans la définition de la macro, cela produitrait un conflit lors de l’utilisation de la macro en mode mahématique. Pour éviter ce genre de problème, on peut utiliser la commande ensuremath qui assure que son argument sera imprimé en mode mathématique quel que soit le mode courant :

\newcommand{\Q}{\ensuremath{\mathbf Q}}
pour tout élément $x$ de l'ensemble \Q , on a $x \in \Q$.


2.  Commandes avec paramètres

newcommand peut prendre un nombre de paramètres qu’on spécifie entre crochets et qui seront appelés #1, #2 etc…

\newcommand{\repete}[1]{je dis #1, #1 et #1}
\repete{oui}


\newcommand{\idrem}[2]{#1^2 + 2#1#2 + #2^2}
$\idrem{a}{b}$ et $\idrem{x}{y}$


la syntaxe complète de la commande newcommand est :
\newcommand{cmd}[narg][defaut]{def}
cmd désigne le nom de la commande, narg le nombre d’arguments, defaut désigne l’argument par défaut (C’est toujours le premier) et def désigne la définition de la commande.

\newcommand{\somme}[1][x]{#1_1+\cdots+#1_n}
$\somme[y]$ \hfill $\somme$ 


\newcommand{\SOMME}[2][x]{#1_1+\cdots+#1_#2}
$\SOMME[y]{p}$ \hfill $\SOMME{i}$


3.  Environnements personnalisés

De la même manière que pour les macro-commandes, on peut définir des environnements. la syntaxe complète de la commande newenvironment est :
newenvironment{cmd}[narg][defaut]{begindef}{enddef}
cmd désigne le nom de la commande, narg le nombre d’arguments, defaut désigne l’argument par défaut, begindef est exécuté lorsque l’environnement est rencontré et enddef lorsque l’environnement est clos.

\newenvironment{petitalique}{\itshape \tiny}{}

Normal normal normal normal normal normal,
\begin{petitalique} c'est tout petit ! \end{petitalique}
normal normal normal normal normal normal.


\newcommand{\barre}{\vrule width 1pt height 9pt depth 3pt}
\newenvironment{petitalique}{\barre \itshape \tiny}{\barre }

Normal normal normal normal normal normal,
\begin{petitalique} c'est tout petit ! \end{petitalique}
normal normal normal normal normal normal.]


\newenvironment{questions}{Lots:
     \begin{enumerate}[N°1:]}
     {\end{enumerate} }

\begin{questions}
 \item Un aller-retour Terre-Lune
 \item Une Ferrari 250GTO
 \item Deux Carambars
\end{questions}


4.  Exemples

\usepackage{pstricks-add}
\newcommand{\QCM}[4]{   #1 \\ 
\psframe(.2,.2) \quad #2 \hfill 
\psframe(.2,.2) \quad #3 \hfill 
\psframe(.2,.2) \quad #4 }
\QCM{Pour ou contre ?}{Oui}{Non}{Peut-être} \\
\QCM{Quel âge avait Rimbaud ?}{12 ans}{17 ans}{21 ans}