Dans le code suivant, si j'insère une espace avant ou après le nom de l'environnement Ouvrir dans l'éditeur Overleaf
Or, on sait que les espaces sont supprimés après les commandes. Dans le code ci-dessus, en omettant les accolades après la commande On sait qu'avec TeX :
Pour TeX une commande, appelée séquence de contrôle, est :
Ainsi, puisque dans un environnement LaTeX les espaces ne sont pas « mangés » par TeX, j'en déduis qu'un environnement peut avoir un nom composé de plusieurs mots comme par exemple : Ouvrir dans l'éditeur Overleaf
Le code suivant l'illustre : Ouvrir dans l'éditeur Overleaf
Edit ce même jour à 11 h 00, ajout d'un deuxième exemple montrant que l'on peut définir un environnement dont le nom commence par une espace (ou par plusieurs) : Ouvrir dans l'éditeur Overleaf
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.
Affichage de 5 parmi 8
Afficher 3 commentaire(s) en plus
|
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 Votre deuxième exemple :
vous définissez le nom avec un espace entre bidule et truc. pour
Comme l'a dit @touhami les noms des environnements sont définis à coup de
Voici un exemple : Ouvrir dans l'éditeur Overleaf
Pour les commandes, c'est un peu plus compliqué, regardez ce code. Ouvrir dans l'éditeur Overleaf
et le résultat de Ouvrir dans l'éditeur Overleaf
On vient de définir
Autre exemple : Ouvrir dans l'éditeur Overleaf
dans ce cas on définit une macro 1) pour le 1 effectivement j'aurais du préciser, même si je trouve ça évident.
pour le 2 je ne suis pas d'accord 3) oui j'ai pas testé 1
Désolé, c'est ma faute, j'ai considéré le cas général de Pas de soucis, on commet tous des erreurs, je n'ai pas poussé mes tests assez loin comme le Le tilde est redéfini par LaTeX : |
Les règles sont les mêmes. Par exemple, deux espaces consécutifs ou plus sont considérés comme un seul espace. ECM Ouvrir dans l'éditeur Overleaf
C'est difficile de donner une réponse complète. En effet,
les environnements LaTeX utilisent, derrière la scène, la primitive |
des espaces consécutives sont considérées comme une.
Voici l'idée derrière un environnement :
\newenvironment{ foo bar }
est équivalente (en quelque sorte) à\expandafter\newcommand\csname foo bar \endcsname
et\begin{ foo bar }
équivalente à\csname foo bar \endcsname bla bla
. Voir par exemple\documentclass[11pt]{article}
\begin{document}
\expandafter\newcommand\csname foo bar \endcsname{bon jour}
\csname foo bar\endcsname bla bla
\end{document}
@touhami, Pouvez-vous expliquer les commandes \expandafter , \csname et \endcsname ?
@AndréC Voulez vous poser un nouvelle question, ou dois je ajouter une petite réponse?
Le mieux il me semble est de poser une nouvelle question, car elle n'a rien à voir avec la question originelle. @touhami ça vous laissera plus de marge pour votre réponse que dans un commentaire ;)
@touhami, ce qui m'intéresse est d'avoir une réponse qui s'adresse au maximum de personnes et essentiellement à ceux qui débutent l'apprentissage de la programmation TeX et LaTeX pour lesquels il n'y a aucune évidence et où tout doit être expliqué le plus simplement possible.
Mais je n'exige rien car les réponses pédagogiques (les plus faciles à comprendre) sont les plus difficiles à écrire.
@touhami effectivement c'est amusant comme exemple mais pour le premier je dirais logique puisque
\empty
ne renvoie pas une chaine de caractères puisque vide, d'où l'erreur.@AndréC, je ne vois pas ce que vous voulez dire par "TeX et LaTeX ne gère pas les espaces de la même façon".
\csname
est une primitive de TeX. A votre question initiale une réponse à été donnée (que vous devriez valider). Maintenant si vous voulez une explication à\csname
poser une nouvelle question car ça ne correspond pas à la question originelle. Où mieux lisez le Texbook, vous semblez vouloir vous intéresser aux rouages de TeX, c'est donc à mon avis indispensable.