Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
2_programmation:macros:que_sont_les_environnements [2021/07/06 07:06] – Compilation du code d'un exemple. jejust2_programmation:macros:que_sont_les_environnements [2022/07/05 13:53] (Version actuelle) – [La gestion des paramètres en fin d'environnement] <> → ⟨⟩ dbitouze
Ligne 1: Ligne 1:
-====== What are LaTeX “environments”? ======+====== Que sont les environnements LaTeX? ======
  
 +Les //environnements// ont été mis en place avec <latex>\LaTeX</latex> : ils effectuent une action sur la totalité d'un bloc délimité dans le document plutôt que d'agir en un point donné de votre document.
  
-While TeX makes direct provision for commands, LaTeX adds a concept of "environment"+===== Environnement sans paramètre =====
-Environments perform an action on a block (of something or other) rather than just doing something at one +
-place in your document.+
  
-A totally trivial environment could change the font in use for a chunk +Un environnement simple pourrait changer la police utilisée pour une partie du texte. En voici un exemple de définition :
-of text, as+
  
 <code latex> <code latex>
-\newenvironment{monoblock}% +\newenvironment{chassefixe}% 
-  {\ttfamily}% +  {% Code exécuté au début de l'environnement 
-  {}+   \ttfamily}% 
 +  {% Code exécuté en fin d'environnement 
 +  }
 </code> </code>
-which defines a ''monoblock'' environment which may be used as:+ 
 +L'environnement ''chassefixe'' ainsi défini peut ensuite être utilisé de la manière suivante :
  
 <WRAP column 50ex> <WRAP column 50ex>
 <code latex> <code latex>
-\begin{monoblock+Voici un exemple% 
-  Some text set in monospace+\begin{chassefixe
-\end{monoblock}+de texte à chasse fixe
 +\end{chassefixe}
 </code> </code>
 </WRAP> </WRAP>
Ligne 29: Ligne 31:
   \pagestyle{empty}   \pagestyle{empty}
  
-\newenvironment{monoblock}%+\newenvironment{chassefixe}%
   {\ttfamily}%   {\ttfamily}%
   {}   {}
  
 \begin{document} \begin{document}
-\large +Voici un exemple% 
-\begin{monoblock+\begin{chassefixe
-  Some text set in monospace+de texte à chasse fixe
-\end{monoblock}+\end{chassefixe}
 \end{document} \end{document}
 </latexdoc> </latexdoc>
Ligne 43: Ligne 45:
 <WRAP clear /> <WRAP clear />
  
-It is a particularly simple example.  A rather complicated +Certains environnements s'avèrent autrement plus complexes tel ''document''. Simple d'usageil n'en appelle pas moins des codes <latex>\TeX</latex> peu évidents. De fait, la plupart des environnements sont plus élaborés que ''chassefixe'' et //beaucoup// plus simples que ''document''.
-environment is introduced by ''\begin{document}''; it looks +
-simplebut needs all sorts of special TeX code to make it work +
-"transparently"; most environments are more elaborate than +
-''monoblock'' and //much// simpler than ''document''.+
  
-An environment puts its content inside a TeX //group//, so that +Un environnement place son contenu dans un //groupe// <latex>\TeX</latex>de sorte que les commandes utilisées à l'intérieur de l'environnement « ne s'en échappent pas ». Ainsi, l'environnement ''chassefixe'', ci-dessusrestreint son effet à son propre contenu (ce qui figure entre ''\begin{chassefixe}'' et ''\end{chassefixe}''), ce qui correspond exactement à notre besoin.
-commands used inside the environment don't "leak out" --- the +
-''monoblock'' environmentaboverestricts its effect to +
-its own contents (the stuff between the ''\begin{monoblock}'' +
-and ''\end{monoblock}''), which is just what you need for this +
-sort of thing.+
  
-So that's "simple" environments; the ''monoblock'', above +<note tip> 
-doesn't actually gain us much over+Certains environnements simples ne nous font pas gagner beaucoup de temps en matière de saisie. De fait, notre environnement ''chassefixe'' pourrait être remplacé par : 
  
 <code latex> <code latex>
-{\ttfamily some text set in monospace}+Voici un exemple {\ttfamily de texte à chasse fixe.}
 </code> </code>
-though in fact many useful environments are just as simple (to look at). 
-Some, such as ''verbatim'', look simple but are actually very tricky inside. 
  
-LaTeX also allows arguments to an environment:+Cependant, ces environnements : 
 +  * peuvent rendre votre code plus lisible ; 
 +  * permettent de mieux gérer la mise en forme de votre document. Ainsi, modifier la définition de votre environnement modifiera la mise en forme de tous les environnements présents dans votre document. 
 +</note> 
 + 
 +===== Environnement avec paramètres ===== 
 + 
 +<latex>\LaTeX</latex> permet également d'utiliser des paramètres avec les environnements. Voici un exemple d'environnement demandant un paramètre 
  
 <code latex> <code latex>
-\newenvironment{fontblock}[1]%+\newenvironment{blocfonte}[1]%
   {#1\selectfont}%   {#1\selectfont}%
   {}   {}
 </code> </code>
-and use of ''fontblock'' as:+ 
 +Cet environnement s'utilise alors ainsi (et produit ici le même résultat que l'environnement ''chassefixe'' vu plus haut) :
  
 <code latex> <code latex>
-\begin{fontblock}{\ttfamily}+Voici un exemple% 
 +\begin{blocfonte}{\ttfamily
 +de texte à chasse fixe. 
 +\end{blocfonte}
 </code> </code>
-would produce the same effect as the ''monoblock'' environment. 
  
-Environments may also have optional arguments, in much the same way as +==== Les paramètres optionnels ==== 
-commands:+ 
 +Les environnements peuvent également avoir des paramètres optionnels, à l'image des commandes. Voici un exemple 
  
 <code latex> <code latex>
-\newenvironment{normaltext}[1][\itshape]%+\newenvironment{textespecial}[1][\itshape]%
   {#1}%   {#1}%
   {}   {}
 </code> </code>
-which will ordinarily set its body in italicbut+ 
 +En temps normalcet environnement compose son contenu en italique mais, dès qu'un paramètre lui est transmis, il modifie la mise en forme (ici, une nouvelle fois pour restituer la mise en forme obtenue avec ''chassefixe'') :
  
 <code latex> <code latex>
-\begin{normaltext}[\ttfamily] +Voici un exemple% 
-  ..+\begin{textespecial}{\ttfamily} 
-\end{normaltext}+de texte à chasse fixe
 +\end{textespecial}
 </code> </code>
-will observe its optional argument, and behave the same as the 
-''monoblock'' we started with. 
  
-Note that an environments argument(s) (mandatory or optional) are +==== La gestion des paramètres en fin d'environnement ==== 
-//not// passed to the ''\end'' text of the environment --- that + 
-is specified as a macro with no argumentsso that+Les paramètres d'environnement //ne sont pas transmis// au code en fin d'environnement. Dès lorsle code suivant pose problème :
  
 <code latex> <code latex>
-\newenvironment{normaltext}[1][\itshape]% +\newenvironment{textespecial}[1][extrait]% 
-  {#1}% +  {Ici commence notre #1.}% 
-  {\typeout{what was #1, again?}+  {Ici finit notre #1.}
 </code> </code>
-produces an error message+ 
 +Il se produit ici l'erreur suivante (détaillée à la question « [[2_programmation/erreurs/i/illegal_parameter_number_in_definition_of_command|Que signifie l'erreur: “Illegal parameter number in definition of ⟨commande⟩” ?]] » :
  
 <code text> <code text>
-! Illegal parameter number in definition of \endnormaltext.+! Illegal parameter number in definition of \endtextespecial.
 </code> </code>
-So, if you need to pass an environment argument to the end-code, you 
-have to wrap it in a macro of its own: 
  
 +Aussi, si vous devez passer un paramètre d'environnement dans le code de fin d'environnement, vous devez le transmettre par le biais d'une commande intermédiaire contenant votre paramètre placée dans le code de début d'environnement :
  
 <code latex> <code latex>
-\newenvironment{normaltext}[1][Intro]% +\newenvironment{textespecial}[1][extrait]% 
-  {#1% +  {Ici commence notre #1.
-   \newcommand{\foo}{#1}}% +   \newcommand{\transfert}{#1}}% 
-  {\typeout{what was \foo{}, again?}+  {Ici finit notre \transfert.}
 </code> </code>
- 
  
 ----- -----
 //Source:// [[faquk>FAQ-whatenv|What are LaTeX “environments”]] //Source:// [[faquk>FAQ-whatenv|What are LaTeX “environments”]]
  
-{{htmlmetatags>metatag-keywords=(LaTeX,programmation,environnements personnalisés) +{{htmlmetatags>metatag-keywords=(LaTeX,programmation,environnements,environnement,environnements personnalisés) 
-metatag-og:title=(What are LaTeX “environments”?)+metatag-og:title=(Que sont les environnements LaTeX)
 metatag-og:site_name=(FAQ LaTeX francophone) metatag-og:site_name=(FAQ LaTeX francophone)
 }} }}
- 
2_programmation/macros/que_sont_les_environnements.1625555210.txt.gz · Dernière modification : 2021/07/06 07:06 de jejust
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0