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
Dernière révision Les deux révisions suivantes
2_programmation:macros:que_sont_les_environnements [2018/05/24 08:40]
joseph.wright
2_programmation:macros:que_sont_les_environnements [2021/11/27 10:02]
yannick.tanguy Correction d'une coquille suite à traduction.
Ligne 1: Ligne 1:
---- +====== Que sont les environnements LaTeX? ======
-section: Bits and pieces of (La)TeX +
-date: 2014-06-10 +
----+
  
-# What are LaTeX ''environments''+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 + 
-```latex +<code latex> 
-\newenvironment{monoblock}%+\newenvironment{chassefixe}% 
 +  {% Code exécuté au début de l'environnement 
 +   \ttfamily}% 
 +  {% Code exécuté en fin d'environnement 
 +  } 
 +</code> 
 + 
 +L'environnement ''chassefixe'' ainsi défini peut ensuite être utilisé de la manière suivante : 
 + 
 +<WRAP column 50ex> 
 +<code latex> 
 +Voici un exemple% 
 +\begin{chassefixe} 
 +de texte à chasse fixe. 
 +\end{chassefixe} 
 +</code> 
 +</WRAP> 
 +<WRAP column 30ex> 
 +<latexdoc> 
 +\documentclass{article} 
 +  \usepackage{lmodern} 
 +  \pagestyle{empty} 
 + 
 +\newenvironment{chassefixe}%
   {\ttfamily}%   {\ttfamily}%
   {}   {}
-``` 
-which defines a `monoblock` which may be used as 
-```latex 
-\begin{monoblock} 
-  some text set in monospace 
-\end{monoblock} 
-``` 
-which will look like: 
-  `some text set in monospace` 
-so it is a particularly simple example.  A rather complicated 
-environment is introduced by `\begin{document}`; it looks 
-simple, but 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 +\begin{document} 
-commands used inside the environment don't ''leak out''&nbsp;&mdash; the +Voici un exemple% 
-`monoblock` environment, above, restricts its effect to +\begin{chassefixe
-its own contents (the stuff between the `\begin{monoblock}` +de texte à chasse fixe. 
-and `\end{monoblock}`), which is just what you need for this +\end{chassefixe
-sort of thing.+\end{document} 
 +</latexdoc> 
 +</WRAP> 
 +<WRAP clear />
  
-So that's ''simple'' environments; the `monoblock`above +Certains environnements s'avèrent autrement plus complexes tel ''document''. Simple d'usageil n'en appelle pas moins des codes <latex>\TeX</latex> peu évidentsDe faitla plupart des environnements sont plus élaborés que ''chassefixe'' et //beaucoup// plus simples que ''document''.
-doesn't actually gain us much over +
-```latex +
-{\ttfamily some text set in monospace} +
-``` +
-though in fact many useful environments are just as simple (to look +
-at) Somesuch as `verbatim`, look simple but are +
-actually very tricky inside.+
  
-LaTeX also allows arguments to an environment+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-dessus, restreint son effet à son propre contenu (ce qui figure entre ''\begin{chassefixe}'' et ''\end{chassefixe}''), ce qui correspond exactement à notre besoin. 
-```latex + 
-\newenvironment{fontblock}[1]%+<note tip> 
 +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> 
 +Voici un exemple {\ttfamily de texte à chasse fixe.} 
 +</code> 
 + 
 +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> 
 +\newenvironment{blocfonte}[1]%
   {#1\selectfont}%   {#1\selectfont}%
   {}   {}
-``` +</code>
-and use of `fontblock` as: +
-```latex +
-\begin{fontblock}{\ttfamily} +
-``` +
-would produce the same effect as the `monoblock` +
-environment.+
  
-Environments may also have optional arguments, in much the same way as +Cet environnement s'utilise alors ainsi (et produit ici le même résultat que l'environnement ''chassefixe'' vu plus haut) : 
-commands+ 
-```latex +<code latex> 
-\newenvironment{normaltext}[1][\itshape]%+Voici un exemple% 
 +\begin{blocfonte}{\ttfamily} 
 +de texte à chasse fixe. 
 +\end{blocfonte} 
 +</code> 
 + 
 +==== Les paramètres optionnels ==== 
 + 
 +Les environnements peuvent également avoir des paramètres optionnels, à l'image des commandes. Voici un exemple :  
 + 
 +<code latex> 
 +\newenvironment{textespecial}[1][\itshape]%
   {#1}%   {#1}%
   {}   {}
-``` +</code>
-which will ordinarily set its body in italic, but +
-```latex +
-\begin{normaltext}[\ttfamily] +
-  ... +
-\end{normaltext} +
-``` +
-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 +En temps normal, cet 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''
-_not_ passed to the `\end` text of the environment&nbsp;&mdash; that + 
-is specified as a macro with no argumentsso that +<code latex> 
-```latex +Voici un exemple% 
-\newenvironment{normaltext}[1][\itshape]% +\begin{textespecial}{\ttfamily} 
-  {#1}% +de texte à chasse fixe. 
-  {\typeout{what was #1, again?+\end{textespecial} 
-``` +</code> 
-produces an error message + 
-```latex +==== La gestion des paramètres en fin d'environnement ==== 
-! Illegal parameter number in definition of \endnormaltext+ 
-``` +Les paramètres d'environnement //ne sont pas transmis// au code en fin d'environnement. Dès lorsle code suivant pose problème :  
-Soif you need to pass an environment argument to the end-code, you + 
-have to wrap it in a macro of its own+<code latex> 
-<!-- {% raw %} --> +\newenvironment{textespecial}[1][extrait]% 
-```latex +  {Ici commence notre #1.}% 
-\newenvironment{normaltext}[1][Intro]% +  {Ici finit notre #1.
-  {#1% +</code> 
-   \newcommand{\foo}{#1}}% + 
-  {\typeout{what was \foo{}, again?} +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>” ?]] » : 
-``` + 
-<!-- {% endraw %} -->+<code text> 
 +! Illegal parameter number in definition of \endtextespecial
 +</code> 
 + 
 +Aussisi vous devez passer un paramètre d'environnement dans le code de fin d'environnementvous 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
 +\newenvironment{textespecial}[1][extrait]% 
 +  {Ici commence notre #1.
 +   \newcommand{\transfert}{#1}}% 
 +  {Ici finit notre \transfert.
 +</code> 
 + 
 +----
 +//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)
 +metatag-og:site_name=(FAQ LaTeX francophone)
 +}}
2_programmation/macros/que_sont_les_environnements.txt · Dernière modification: 2022/07/05 13:53 de dbitouze
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0