Pour définir le nom d'un environnement, on peux utiliser pratiquement tous les caracteres que l'on souhaite (j'y reviendrais) y compris l'espace. dans l'exemple `\begin{center }` vous obtenez une erreur ce qui est parfaitement logique puisque l'environnement `center` est nommé sans le token espace.
Votre deuxième exemple :
> \documentclass[11pt]{article}
>
> \newenvironment{bidule truc}{%
> \itshape
> }{%
> % Rien
> }
> \begin{document}
>
> \begin{bidule truc}
> autant d'espace entre bidule et truc sans avoir une seule erreur !
>
> Mais apr\`es ou avant le nom : erreur !
> \end{bidule truc}
>
> \end{document}
vous définissez le nom avec un espace entre bidule et truc. pour `bidule....truc` pas de soucis avec ça, TeX va avaler les espaces en trop comme à son habitude. Mais pour la même raison que précédemment vous ne pouvez pas mettre d'espace avant ou après car cela ne correspond pas à la définition que vous en avez faite au départ. Si pour une raison quelconque il vous faut plusieurs espaces successifs dans le nom de l'environnement, rajoutez `\expandafter\obeyspaces` avant la définition de l'environnement.
>
quelles sont les règles auxquelles sont soumis les noms d'environnement de LaTeX ?
autrement dit, quels sont les caractères autorisés dans le nom des environnements LaTeX ?
Comme l'a dit @touhami les noms des environnements sont définis à coup de `\expandafter\csname...\endcsname` (voir dans le fichier latex.ltx de votre distribution.)
Ainsi pratiquement tous les caractères (y compris les chiffres) sont autorisés dans le nom d'un environnement excepté les restrictions suivantes:
- `#`, on comprend aisément pourquoi;
- `\` est aussi accepté à condition qu'il soit suivi d'une macro définie et ayant pour texte de remplacement une chaine de caractères (voir exemple);
- les caractères de ponctuation tel que `;` sont acceptés à condition de na pas charger babel qui les rend actifs;
- `{` l'est aussi à condition que qu'elle soit accompagnée de son homologue fermante;
- `%` n'est pas accepté puisqu'il met en commentaire tous ce qu'il y a derrière lui. Il faudrait lui changer son catcode (`\catcode`\%=11`) mais ce n'est pas conseillé;
- le tilde n'est pas accepté non plus, en effet il est redéfini par LaTeX (`\def~{\nobreakspace{}}`). Ce n'est donc plus un caractère mais une macro qui n'a pas une chaine de caractère caractères comme texte de remplacement.
Voici un exemple :
\documentclass{article}
\def\truc{bidule}
\newenvironment{&@^_z{}\truc}{\bf}{}
\newenvironment{^^61^^62^^63}{\itshape}{}
\begin{document}
\begin{&@^_z{}\truc}
bidule
\end{&@^_z{}\truc}
\begin{&@^_z{}bidule}
en remplacant \verb+\truc+\ par bidule
\end{&@^_z{}bidule}
\begin{abc}
une autre facon
\end{abc}
\end{document}
> Et j'en conclus donc que le nom des environnements LaTeX n'obéit pas aux même règles que le nom des commandes TeX.
Pour les commandes, c'est un peu plus compliqué, regardez ce code.
\documentclass{article}
\def\ toto#1{\it#1}
\begin{document}
%\show
\ toto{tutu}
\end{document}
et le résultat de `\show`:
> \ =macro: toto#1->\it #1.
On vient de définir `\˽` c'est à dire la macro "espace" qui prend un argument qui sera développé si il y a "toto" devant.
Même si à priori cette commande à l'air de "fonctionner", elle pose des problèmes :
- on peut en définir qu'une car sinon on redéfini différemment `\˽` (donc TeX va couïner, voir plus);
- `\˽` ne peux plus être utilisé dans le texte. Par exemple `\LaTeX\ blabla` ne fonctionnerait plus.
**Autre exemple :**
\documentclass{article}
\def\ta ta#1{\bf#1}
\begin{document}
%\show
\ta ta{titi}
\end{document}
dans ce cas on définit une macro `\ta` qui prend un argument qui ne sera développé que si "ta" se trouve devant lui. Je ne vois pas, à priori, de restriction, mais je ne vois pas l'intérêt non plus.Pour l'espace en dernière position, aucun problème, TeX n'en tient pas compte.