Nouveaux environnements

Syntaxe

On définit un nouvel environnement grâce à la commande à 3 arguments suivante :
\newenvironment{nomdelenvironnement}
{definitiondelentree}
{definitiondelasortie}
Cela peut servir pour personnaliser un environnement existant, par exemple pour avoir des citations en plus petit et en italique :
\newenvironment{macitation}
{\begin{itshape}\small\begin{quotation}}
{\end{quotation}\normalsize\end{itshape}}
Remarquez comment on revient au corps normal en sortie. Si vous voulez pouvoir mettre le nom de l'auteur en première ligne de la citation et entre parenthèses, vous pouvez utiliser un argument :
\newenvironment{macitation}[1]
{\begin{itshape}\small\begin{quotation}(#1)\par}
{\end{quotation}\normalsize\end{itshape}}
Notez la commande \par qui signifie une fin de paragraphe (d'habitude on saute une ligne, mais là c'est impossible !). Ensuite, vous utiliserez votre nouvel environnement comme d'habitude, par exemple
\begin{macitation}{Julius Caesar}
Alea jacta est!
\end{macitation}
Par contre, c'est plus compliqué de mettre le nom de l'auteur en dernière ligne de la même façon, car on ne peut pas se référer à un argument dans la definitiondelasortie.
Les boîtes nous sortiront d'affaire. Il existe des boîtes d'enregistrement (dont le nom est une commande, attention !) et trois commandes pour les créer, les remplir et en afficher le contenu, respectivement : \newsavebox{\nom}, \savebox{\nom}{contenu}, usebox{\nom}.
Exemple d'utilisation :
\newsavebox{\auteur}
\newenvironment{macitation}[1]
{\begin{itshape}\small\begin{quotation}\savebox{\auteur}{(#1)}}
{\par\usebox{\auteur}\end{quotation}\normalsize\end{itshape}}

Encadrés

Ce paragraphe est dédié à l'encadrement. On n'encadre pas souvent dans un document, mais ce n'est pas évident de le faire en cas de besoin (si l'on n'a pas appris et réfléchi un peu).
Evidemment, on peut facilement utiliser \framebox{letrucaencadrer}, quitte à ce que letrucaencadrer soit un environnement minipage s'il risque de déborder (rappelez-vous que les boîtes ne reviennent pas à la ligne en général).

Mais pour créer un environnement encadré, \framebox ne sert à rien directement. En effet, il faudrait écrire \framebox{ en definitiondelentree et } en sortie, ce qui est malheureusement illégal...

Il aurait fallu pour ce faire un environnement de type framebox, mais il n'y en a pas de prévu en LaTeX. Par contre, il y a un environnement lrbox, à 1 argument, qui fait exactement la même chose que la commande \savebox, donc on est sauvés ! Par exemple, pour encadrer les citations on définira

\newsavebox{\contenu}
\newenvironment{citecadre}
{\begin{quotation}\begin{lrbox}{\contenu}\begin{minipage}{\linewidth}}
{\end{minipage}\end{lrbox}\framebox{\usebox{\contenu}}\end{quotation}}