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édentes Révision précédente
Prochaine révision
Révision précédente
2_programmation:macros:que_sont_les_environnements [2018/12/03 23:30]
jejust
2_programmation:macros:que_sont_les_environnements [2021/11/27 10:02] (Version actuelle)
yannick.tanguy Correction d'une coquille suite à traduction.
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 +===== Environnement sans paramètre =====
-concept of "environment"; environments perform an action on a block +
-(of something or other) rather than 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'' which may be used as 
  
 +L'environnement ''chassefixe'' ainsi défini peut ensuite être utilisé de la manière suivante :
 +
 +<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>
-which will look like: +</WRAP> 
-  ''some text set in monospace'' +<WRAP column 30ex> 
-so it is a particularly simple example.  A rather complicated +<latexdoc> 
-environment is introduced by ''\begin{document}''; it looks +\documentclass{article
-simple, but needs all sorts of special TeX code to make it work +  \usepackage{lmodern} 
-"transparently"; most environments are more elaborate than +  \pagestyle{empty}
-''monoblock'' and //much// simpler than +
-''document''.+
  
-An environment puts its content inside a TeX //group//, so that +\newenvironment{chassefixe}% 
-commands used inside the environment don't "leak out" --- the +  {\ttfamily}% 
-''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 +\begin{document} 
-sort of thing.+Voici un exemple% 
 +\begin{chassefixe} 
 +de texte à chasse fixe. 
 +\end{chassefixe} 
 +\end{document} 
 +</latexdoc> 
 +</WRAP> 
 +<WRAP clear /
 + 
 +Certains environnements s'avèrent autrement plus complexes tel ''document''. Simple d'usage, il n'en appelle pas moins des codes <latex>\TeX</latex> peu évidents. De faitla plupart des environnements sont plus élaborés que ''chassefixe'' et //beaucoup// plus simples que ''document''. 
 + 
 +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.
  
-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 
  
-<code latex+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>” ?]] » : 
-! Illegal parameter number in definition of \endnormaltext.+ 
 +<code text
 +! 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,environnement,environnements personnalisés
- +metatag-og:title=(Que sont les environnements LaTeX)
-{{htmlmetatags>metatag-keywords=(LaTeX,concepts+
-metatag-og:title=(What are LaTeX "environments")+
 metatag-og:site_name=(FAQ LaTeX francophone) metatag-og:site_name=(FAQ LaTeX francophone)
 }} }}
- 
2_programmation/macros/que_sont_les_environnements.1543879836.txt.gz · Dernière modification: 2018/12/03 23:30 de jejust
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0