Search the FAQ Archives

3 - A - B - C - D - E - F - G - H - I - J - K - L - M
N - O - P - Q - R - S - T - U - V - W - X - Y - Z
faqs.org - Internet FAQ Archives

FAQ LaTeX francaise V2.12 part 2

( Part1 - Part2 - Part3 )
[ Usenet FAQs | Web FAQs | Documents | RFC Index | Schools ]
Archive-name: fr/faq-latex-francaise/part2
Author: Marie-Paule.Kluth@aar.alcatel-alsthom.fr
Posting-Frequency: mensuel
Version: 2.12

See reader questions & answers on this topic! - Help others by sharing your knowledge
Newsgroups: fr.comp.text.tex, fr.usenet.reponses, news.answers
Ftp-Archive-Name: 
ftp://ftp.univ-lyon1.fr/pub/faq/by-name/fr/

================================================================
     ---- ATTENTION cette FAQ est figee pour le moment ----
	un grand merci a Benjamin Bayart qui s'est propose 
		pour continuer a la diffuser.
================================================================

================================================================
[8] GESTION DES FIGURES
================================================================

# 8.1 # Comment inclure une figure ?
------------------------------------
Remarque : A. K. Goel a écrit un long document concernant les
	   problèmes de gestion de figures et d'images dans 
	   LaTeX. Ce dernier est disponible par ftp  anonyme à
	   math.uwaterloo.ca dans ./pub/figsInLatex.ps.Z ou sur
	   CTAN dans /info/figsinltx.ps
	   
	   De même K. Reckdahl a écrit "Using EPS Graphics in
	   LaTeX2e Documents". Ce document est disponible sur
	   CTAN dans /info/epslatex.ps.

* Sous LaTeX2.09, pour pouvoir appeler un fichier postscript,
il suffit de mettre l'option epsf dans le \documentstyle.
La figure peut ensuite être appelée par la commande
\epsfbox{nom-figure.(e)ps}

Une jolie façon d'inclure une figure dans un source LaTeX2.09
est d'utiliser la macro :

\begin{figure}[htbp] 
   \centerline{\epsfxsize=10cm \epsfbox{nom-figure.format}} 
   \caption{.  \label{fig-}}
\end{figure}

Les options htbp permettent de gérer le placement de la figure
dans le texte (cf. paragraphe 8.7).

* Sous LaTeX2e, il faut utiliser l'un des packages :
'graphics' ou 'graphicx' et la commande \includegraphics. Cette
commande accepte des options telles que dvips ou oztex (cf.
documentation pour plus de détails). 
Le package 'graphicx' a pour majeure différence avec 'graphics'
d'en simplifier les commandes. Ces packages sont disponibles sur
CTAN dans /macros/latex/packages/graphics/. Pour plus de
détails, consulter http://www.loria.fr/tex/packages.html.

Exemple :
\begin{figure}[htbp]
   \begin{center}
      \includegraphics{images/fig1.ps}
   \end{center}
   \caption{\footnotesize blah blah blah}
\end{figure}
%%%% fin exemple %%%%

La commande \includegraphics du package 'graphicx' peut prendre
comme paramètres, angle, width, height, scale, clip et draft.

Exemple :
\includegraphics[width=\linewidth, draft=true]{figure.eps}
%%%% fin exemple %%%%

* Il y a aussi le package 'epsfig' disponible sur CTAN
dans /macros/latex/packages/graphics/ (LaTeX2.09 mais utilisable
avec LaTeX2e). 

Exemple :
\begin{figure}[p] 
   \centerline{\epsfig{file=nom_figure.eps, 
   width=largeur, 
   height=hauteur}}
   \caption{Titre.}
   \label{nom_label} 
\end{figure} 
%%%% fin exemple %%%%

* Une figure au format tex picture, tex picture + epic, tex
picture + eepic, ... peut être appelée directement par une
commande \input. En outre, si vous utilisez un format epic ou
eepic, il faut penser à rajouter 'epic' ou 'eepic' à la ligne
documentstyle ou d'inclure les packages 'epic' ou 'eepic'.

# 8.2 # Comment nommer une figure ?
-----------------------------------
C'est la commande \caption qui permet de faire cela. Par défaut
le titre de la figure apparaitra en dessous. Cf exemples
ci-dessus. Pour que le titre apparaisse au dessus, il faut
redéfinir les longueurs suivantes.

Exemple :
\setlength\abovecaptionskip{0pt}
\setlength\belowcaptionskip{10pt}
puis appeler :
\begin{figure}
\caption{... ... ...}
\includegraphics{dessin.eps}
\end{figure}
%%%% fin exemple %%%%

# 8.3 # Comment placer des figures côte à côte ?
------------------------------------------------
* LaTeX2.09. Pour mettre des figures côte à côte, il suffit
d'encapsuler leur appel dans des minipages.

Exemples :
+ avec le package 'epsf'
\begin{minipage}[t]{.46\linewidth}
   \center\epsfxsize= 5cm \epsfbox{fig1.eps}
\end{minipage} % ne pas sauter de ligne
\begin{minipage}[t]{.46\linewidth}
   \center\epsfxsize= 5cm \epsfbox{fig2.eps}
\end{minipage}

ou si l'on veut attacher des titres aux figures :

+ avec le package 'epsfig'
\begin{figure}
 \begin{minipage}[b]{.46\linewidth}
  \centering\epsfig{figure=fig1.ps,width=\linewidth}
  \caption{premiere figure \label{fig1}}
 \end{minipage} \hfill
 \begin{minipage}[b]{.46\linewidth}
  \centering\epsfig{figure=fig2.ps,width=\linewidth}
  \caption{deuxieme figure \label{fig2}}
 \end{minipage}
\end{figure}
%%%% fin exemple %%%%

* Sous LaTeX2e, il faut utiliser le package 'graphics' ou
'graphicx' disponibles sur CTAN dans
/macros/latex/packages/graphics/.

Exemples :
\begin{figure}
   \begin{minipage}[c]{.46\linewidth}
      \includegraphics{figure1.format}
   \end{minipage} \hfill
   \begin{minipage}[c]{.46\linewidth}
      \includegraphics{figure2.format}
   \end{minipage}
\end{figure}

\begin{figure}
\includegraphics[width=5cm]{fig1.eps}\hfill
\includegraphics[width=5cm]{fig2.eps}
\caption{Titre commun}\label{fig:somefiglabel}
\end{figure}
%%%% fin exemple %%%%

* Une autre solution consiste à mettre chaque figure dans une
case d'un tableau.

Exemple (avec le package graphics ou graphicx) :
\begin{tabular}{cc}
   \includegraphics{figure1.eps} & 
   \includegraphics{figure2.eps} \\
\end{tabular}
%%%% fin exemple %%%%

* Si l'on veut un seul titre pour plusieurs figures voir le
package 'subfigure' disponible sur CTAN dans
/macros/latex/contrib/supported/subfigure/.

Exemple :
\begin{figure}[ht]
\begin{center}
  \subfigure[I]{\epsfig{figure=st1.ps,width=6.58cm}}\quad
  \subfigure[II]{\epsfig{figure=st2.ps,width=5.0cm}}\\
  \subfigure[III]{\epsfig{figure=st3.ps,width=5.0cm}}
\end{center}
\caption{Impermeable surface treatments}
\label{fig:inf}
\end{figure}
%%%% fin exemple %%%%

* Une autre possibilité pour obtenir un titre par figure est
d'utiliser le package 'epslatex' disponible sur CTAN dans
/info/.

# 8.4 # Comment modifier le nombre de figures par page ?
--------------------------------------------------------
En fait, on ne peut agir que globalement sur le nombre de
flottants autorisé par page. Il n'y a pas de sélection
figure/tables/....

Il arrive fréquemment que lorsqu'un flottant dépasse 60% d'une 
page, LaTeX préfère changer de page plutôt que d'utiliser les 
40% de l'espace restant.  

La commande \floatpagefraction permet de redéfinir l'espace
minimum que peuvent occuper des flottants. Cela permet de
limiter le "blanc" sur une page contenant des flottants.

Exemple :
\renewcommand{\floatpagefraction}{.9} 
utilisée avec la commande :
\renewcommand{\textfraction}{.1}
permet de dire que le texte peut n'occuper que 10% d'une
page, et donc que des flottants peuvent occuper les 90% restant.
%%%% fin exemple %%%%

Il y a d'autres paramètres intéressants :
\setcounter{totalnumber}{4} 
qui détermine le nombre de flottants autorisés par page,
\renewcommand{\topfraction}{.8} et
\renewcommand{\bottomfraction}{.8}
qui indiquent la fraction maximum du haut ou du bas de la page
que peuvent occuper des flottants. 

Remarque : Il est recommandé de ne jamais mettre 100% comme
	   paramètre.

# 8.5 # Comment superposer du texte sur des figures ?
-----------------------------------------------------
* PSFrag (disponible sur CTAN dans
/macros/latex/contrib/supported/psfrag) donne cette possibilité.
La solution consiste en fait à : 
1+ faire le graphique .ps AVEC des textes et légendes MAIS
approximatifs  
2+ utiliser PSfrag pour qu'il remplace les textes approximatifs
par des textes << LaTeX >> 
(3-) l'écriture << par dessus >> (le remplacement en fait) est
fait par PSfrag.
Pour plus de détails, consulter le document "Using EPS Graphics
in LaTeX2e Documents" disponible sur CTAN dans /info/epslatex.ps.

* On peut également générer une courbe dans un fichier .eps,
qui peux ensuite être inclu dans un environnement "picture",
dans lequel il est ensuite possible d'ajouter du texte avec des
\put. Cela demande pas mal de mises au point.

Exemple :
\setlength\unitlength{1cm}
\begin{picture}(10,10)
\put(0,0){\includegraphics{mondessin.eps}}
\put(10,10){Mon commentaire latex avec des $maths$}
\end{picture}
%%%% fin exemple %%%%

Cette technique permet de conserver la puissance de LaTeX et
d'avoir une typographie homogène mais elle a l'inconvenient
d'être assez lourde.

* PSTricks est un ensemble de macros TeX, disponible sur CTAN
dans /graphics/pstricks/, qui permet également de faire cela. Il
nécessite un gros investissement (il y a une centaine de pages
de documentation). Cependant, si l'on se limite à des commandes
simples (comme par exemple écrire un programme en C qui trace le
dessin, avec simplement des points, des droites, et un peu de
texte), la liste sommaire des commandes suffit (6 pages).

* Xfig offre une autre solution. Après avoir inclu un fichier
postscript généré par un autre programme, on peut rajouter
du texte ou des commandes LaTeX dessus.  xfig -sp 
Sauvegarder comme "combined PS/LaTeX"

* Metapost est un langage graphique très proche de Metafont,
mais qui génère du postscript. Il permet de produire des figures
avec du texte et est bien interfacé avec TeX (Knuth
l'utilise). Metapost est integré dans web2c 7.0. Metapost a
déjà été porté sous MS-DOS et Mac (CMacTeX). Pour plus
d'informations, vous pouvez consulter la page de D. Roegel :
http://www.loria.fr/~roegel/metapost.html.

* pstoedit permet également de visualiser des fichiers
postscript (sans bitmaps) et d'ajouter du texte ou des figures
par dessus.

# 8.6 # Comment réaliser des captures d'écran ?
-----------------------------------------------
* Un outil très utile pour effectuer des captures d'écran sous
Unix est xv. xv est un éditeur d'images écrit par  J. Bradley
disponible sous unix. xv est capable de gérer différents
formats d'image (encodage PS, GIF, JPEG, TIFF,...). Il
permet de visualiser des images et aussi de réaliser des
captures d'écran, soit partielles définies à la souris, soit
par fenêtre X Window. Il suffit ensuite de sauvegarder la
saisie d'écran de xv en format postscript et de l'appeler sous
LaTeX.

xv est accessible par ftp à ftp.ibp.fr.

* Sur PC il y a pcxdump disponible sur
http://micros.hensa.ac.uk. Le package 'verbtext', disponible sur
CTAN, permet ensuite d'appeler la saisie réalisée.

* De même, le package 'scrdumps' et l'utilitaire scr2tex.exe
sous DOS permettent d'inclure des saisies d'écran dans un
document LaTeX.

# 8.7 # Comment tracer une courbe ?
-----------------------------------
* Xgraphic est un outil de tracé de courbes simple
d'utilisation (les options sont accessibles en interactif) mais
limité aux courbes 2D. Il est disponible avec une doc française
à http://blanche.polytechnique.fr/ et
ftp://barbes.polytechnique.fr/pub/Xgraphic.

* xmgr marche également très bien.

* GNUplot est disponible sous Unix, sous Dos, sous Windows et
sous macOS
(http://www.ee.gatech.edu/users/schooley/gnuplot.html). Il
possède une sortie LaTeX (eepic). Il permet de tracer des
courbes (2D et 3D) à partir de valeurs ou d'une fonction. Les
formats de sortie sont LaTeX ou postscript. 

En outre, sous Unix, il est possible de récupérer des fichiers
GNUplot exportés par 
	set terminal fig
	set output "graph.fig"
puis de les modifier.

La FAQ GNUplot est disponible à
http://www.uni-karlsruhe.de/~ig25/gnuplot-faq/.

* Xy-pic compatible plain TeX, LaTeX2.09 et LaTeX2e permet de
tracer des courbes, de réaliser des diagrammes commutatifs, des
automates, et plein d'autres choses. Pour plus de
renseignements, consulter :
ftp ftp.mpce.mq.edu.au /pub/maths/TeX/ ou
http://www.mpce.mq.edu.au/~ross/Xy-pic.html ou
http://www.brics.dk/~krisrose/Xy-pic.html
Le package 'xypic' est disponible sur CTAN dans
/macros/generic/diagrams/xypic.

* Sur PC grapher et surfer permettent également de tracer des
courbes et des surfaces (ils sont indépendants de LaTeX, mais
une saisie d'écran est toujours possible).

* Le package 'curves' disponible sur CTAN dans
/macros/latex/contrib/supported/curves/ permet de définir des
courbes dans l'environnement picture.

* Mathematica est également utilisable pour tracer des courbes
2D et 3D.

# 8.8 # Comment est géré le positionnement des figures ?
--------------------------------------------------------
Comme mentionné précédemment (8.1), il existe différentes
options de placement des figures. Les plus classiques sont
\begin{figure}[htbp] pour laisser à LaTeX la possibilité de
placer les figures suivant ses critères de beauté. (h) impose
si possible le placement de la figure à l'appel de la macro
ci dessus. Sinon la figure sera placée en haut de la page
suivante (t) ou en bas (b), voire sur une page seule (p).

En revanche, pour forcer (dans la mesure du possible) LaTeX à
placer une figure là ou elle a été appelée, il faut utiliser le
package 'float', de A. Lingnau, (\usepackage{float}) et l'option
H (\begin{figure}[H]). Ce package permet de définir un tel
placement par défaut via la commande \floatplacement{figure}{H}.
Il est disponible sur CTAN dans
/macros/latex/contrib/supported/float/. Voir la question 6.34
pour un exemple d'utilisation de ce package.

De même l'utilisation du caractère ! devant une option de
placement permet de forcer LaTeX2e à effectuer son placement au
plus tôt (suivant l'option choisie).

Remarque (D.Barbier) : si un flottant ne peut pas être placé
	avec les paramètres indiqués , celui-ci et tous les
	flottants qui viennent après seront mis à la fin du
	chapitre (en fait, ils seront insérés grâce à la
	commande \clearpage).

Le package 'placeins' de D. Arsenau permet de mettre des
garde-fous dans le texte. Par exemple, lorsqu'on place une
figure en dur avec une commande du style :
%%%% debut macro %%%%
\makeatletter
\newenvironment{figureH}{\begin{center}
   \newcommand{\@captype}{figure}}{\end{center}}
\makeatother
%%%% fin macro %%%%
l'utilisation de \FloatBarrier juste avant, permet de vider le
buffer de flottants actuellement stockes.

# 8.9 # Comment placer une légende à côté d'une figure ?
--------------------------------------------------------
* Pour placer une légende à côté d'une figure, il faut utiliser
l'environnement minipage.

Exemple (extrait du cahier GUTenberg 22 pour l'article sur
esperluette) :
+ mettre dans le préambule :

%%%% debut macro %%%%
\newlength\jataille  
\newcommand{\figgauche}[3]%
{\jataille=\textwidth\advance\jataille by -#1
\advance\jataille by -.5cm
\begin{minipage}[c]{#1}
   \includegraphics[width=#1]{#2}
\end{minipage}\hfill
\begin{minipage}[c]{\jataille}
   \footnotesize #3 \normalsize
\end{minipage}}
%%%% fin macro %%%%

+ puis utiliser :
\figgauche{5cm}{totor.eps}{Titre.}

* On peut également utiliser des parbox.

Exemple :
\begin{figure}
\parbox{7cm}{...figure}\parbox{7cm}{\caption{---}}
\end{figure}
%%%% fin exemple %%%%

# 8.10 # Comment insérer des figures dans multicol ?
----------------------------------------------------
Pour forcer une figure à rester sur une seule colonne sous
l'environnement multicols, il faut utiliser :
\begin{figure*}[!ht] 
mettre sa figure
\end{figure*}

Exemple (avec les packages 'graphicx' et 'float') :
\begin{figure*}[H] 
    \includegraphics[width=3cm]{totor.eps}
\end{figure*}
%%%% fin exemple %%%%

Remarque : dans ce cas la gestion de \caption semble ne pas être
	   correcte.

ATTENTION : les classes AMS ne définissent pas les
	    environnements figure* et table*. En
	    outre, le package 'endfloat' a le mauvais goût de
	    supposer qu'ils sont définis. Un remède est de
	    faire :
	    \documentclass[a4paper,11pt]{amsart}
	    \newenvironment{figure*}{\figure}{\endfigure}
	    \usepackage{endfloat}

# 8.11 # Comment faire apparaître toutes les figures en fin de
--------------------------------------------------------------
document ?
----------
Le package 'endfloat', disponible sur CTAN dans
macros/latex/contrib/supported/, permet de reporter toutes les
figures en fin de document.

# 8.12 # Comment insérer des images Mathematica ?
-------------------------------------------------
* Sous Unix ou sous DOS, il faut, à partir de Mathematica,
demander : Display["machin",truc]
qui sauve l'image truc dans le fichier machin dans un Postscript
embryonnaire, puis
!psfix -epsf machin > machin.eps
et on a un fichier EPS comme il faut.

* Sous Windows, après avoir sélectionné l'image désirée, il
faut, dans le menu "Fichier" de Mathematica, "Exporter" vers un
format qui peut être .EPS (PostScript Encapsulé). L'appel de ce
fichier .eps sous LaTeX se fait alors de manière classique (cf.
paragraphe 8.1).

Il est également possible d'extraire par copier/coller l'image
(.WMF) et de l'envoyer vers Ghostscript pour Windows, et la
dedans de l'enregistrer dans un fichier postscript. L'avantage
de cette solution est qu'elle peut permettre de retravailler
l'image (avant collage dans GS au moyen de CorelDraw, par
exemple). 

A noter que Y&Y TeX system supporte les images WMF (Windows
MetaFile) aussi bien que les TIFF ou EPSF. Mathematica est l'un
des seuls logiciels pour Windows qui utilise un format WMF
plutôt que TIFF.

* Dernière solution (multi-système) : se servir du notebook
intitulé "GnuDisplay.m"(disponible sur MathSource chez Wolfram).
Celui-ci permet d'exporter une image Mathematica en image
GNUplot. Dans GNUplot, on peut alors exporter une image de deux
façons :  
+ vers un fichier ".mf" qui contient l'image sous forme de
fonte. Avantage : on utilise MetaFont pour générer la fonte qui
contiendra l'image et l'insérer dans le texte, ce qui permet sa
prévisualisation immédiate par "dviscr", sans passer par "dvips"
puis GhostScript ou GhostView ;
+ vers un fichier au format LaTeX eepic, que l'on insère
facilement par la suite (commande \special).

# 8.13 # Comment modifier la taille d'une bounding box ?
--------------------------------------------------------
En format eps (encapsulated postscript), la `bounding box`
permet de préciser la taille d'une image. La syntaxe est la
suivante :
%%BoundingBox: 0 0 507 257
Les coordonnées correspondent dans l'ordre :
- coordonnée horizontale du point en bas à gauche de la figure;
- coordonnée verticale du point en bas à gauche;
- coordonnée horizontale du point en haut à droite;
- coordonnée verticale du point en haut à droite.
Les coordonnées verticales étant prises à partir du bas, et
celles horizontales à partir de la gauche.

De plus ces coordonnées sont exprimées en points PostScript,
c'est-à-dire en soixante-douzième de pouce, i.e.:
1 pt PS = 1/72 pouce = 2.54/72 cm.

Malheureusement, il arrive parfois que la taille de la bounding
box soit supérieure à celle de la taille réelle du dessin
qu'elle contient (il n'y a pas de mise à l'échelle). Le package
'boxedepsf', de L. Siebenmann, offre les commandes \Trim qui
permettent de résoudre le probleme.

A. J. Carr à adapté ce package à LaTeX2e. Son package s'appelle
'boxedeps'. Ce dernier est disponible sur CTAN dans
/macros/generic/boxed et par ftp à matups.math.u-psud.fr dans
/pub/TeX/Graphics.dir/ArtIntegration.dir/boxedeps.dir.

Exemple :
\TrimTop{15pct}\BoxedEPSF{toto}
avec pct = pourcentage de la hauteur.
%%%% fin exemple %%%%

# 8.14 # Comment obtenir une figure avec un titre non numéroté ?
----------------------------------------------------------------
Il faut utiliser la commande \unnumberedcaption dont voici la
définition :
%%%% debut macro %%%%
\makeatletter    % <=== in a .sty file delete this

\newcommand{\unnumberedcaption}%
	{\@dblarg{\@unnumberedcaption\@captype}}

\newcommand{\@unnumberedcaption}{}% undefined yet
\long\def\@unnumberedcaption#1[#2]#3{\par
  \addcontentsline{\csname ext@#1\endcsname}{#1}{%
    % orig: \protect\numberline{\csname the#1\endcsname}%
    %{\ignorespaces #2}
    \protect\numberline{}{\ignorespaces #2}%
    }%
  \begingroup
    \@parboxrestore
    \normalsize
    % orig: \@makecaption{\csname fnum@#1\endcsname}%
    %{\ignorespaces #3}\par
    \@makeunnumberedcaption{\ignorespaces #3}\par
  \endgroup}

% redefine \@makeunnumberedcaption (like \@makecaption)
% for your own layout
\newcommand{\@makeunnumberedcaption}[1]{%
  \vskip\abovecaptionskip
  \sbox\@tempboxa{#1}%
  \ifdim \wd\@tempboxa >\hsize
    #1\par
  \else
    \global \@minipagefalse
    \hbox to\hsize{\hfil\box\@tempboxa\hfil}%
  \fi
  \vskip\belowcaptionskip}

% for LaTeX 2.09 compatibility, define \above/belowcaptionskip:
\@ifundefined{abovecaptionskip}{%
  \newlength{\abovecaptionskip}%
  \setlength{\abovecaptionskip}{10pt}%
}{}
\@ifundefined{belowcaptionskip}{%
  \newlength{\belowcaptionskip}%
  \setlength{\belowcaptionskip}{0pt}%
}{}

\makeatother    % <=== in a .sty file delete this
%%%% fin macro %%%%

Remarque : le package 'french' V3,49 inclut cette macro.

# 8.15 # Comment redéfinir le style de caption ?
------------------------------------------------
* Par exemple pour changer la fonte de Figure : en gras, il
faut utiliser :

%%%% debut macro %%%%
\makeatletter
\renewcommand{\fnum@figure}{\small\textbf{\figurename~\thefigure}}
\makeatother
%%%% fin macro %%%%

* Pour agir sur les espaces horizontaux de part et d'autre de la
légende d'un flottant, on peut utiliser caption2.sty, et définir
la longueur \captionmargin qui sera insérée à gauche et à droite
de la légende.

# 8.16 # Comment fondre une image dans du texte ?
-------------------------------------------------
* Le package 'floatfig', de T. Kneser, disponible sur CTAN
dans /macros/latex/contrib/other/floatfig/, permet d'entourer
une figure de texte de manière très efficace grâce à
l'environnement floatingfigure. Ce package a été conçu pour
LaTeX2.09, pour des documents sans colonnes.

Exemple :
\begin{floatingfigure}[l]{4cm}
   \includegraphics[width=4cm]{dessin}
   \caption{Titre}
\end{floatingfigure}
%%%% fin exemple %%%%

Remarque : le [l] du \begin{float...} sert à mettre la figure à
	   gauche. [r] permet de l'avoir à droite, [p] la met 
	   à gauche sur une page de gauche et à droite sur une
	   page de droite.

* Le package 'floatflt', de T. Kneser et M. Dahlgren, disponible
sur CTAN dans /macros/latex/contrib/other/floatflt/, a été écrit
pour LaTeX2e. Il étend les possibilités de floatfig par de
nombreuses options et est utilisable pour les figures et les
tableaux.

Exemple :
\begin{floatingfigure}[options]{width of figure}
   figure contents
\end{floatingfigure}
%%%% fin exemple %%%%

* Le package 'picinpar' pour LaTeX2.09 est disponible sur CTAN
dans /macros/latex209/contrib/picinpar/ et dans
/systems/msdos/4alltex/disk04/. Il permet de définir un nombre
de lignes avant lequel la figure pourra être insérée dans le
texte. La taille de la figure dépend de son contenu, sa position
est variable, et peut s'étaler sur plusieurs paragraphes. 

ATTENTION : Ce package n'est pas compatible avec amstex.

Exemple :
\begin{window}[#lines before, l|r|c, picture contents, caption}
   ... paragraph text ...
\end{window}
%%%% fin exemple %%%%

* Mieux que le précédent, le package 'picins' disponible sur
CTAN dans /macros/latex209/contrib/picins/ permet d'inclure des
figures dans des paragraphes.

Exemple :
\parpic(width,height)(x-off,y-off)[Options][Position]{Picture}
    Paragraph text....
%%%% fin exemple %%%%

* Le package 'wrapfig' permet de définir la hauteur de la
figure, celle-ci ci peut apparaître à droite ou à gauche dans le
texte ou encore dans une marge. Ce package n'est pas compatible
avec les environnements de liste.

Exemple :
\begin{wrapfigure}[height in lines]{l|r}[overhang]{width}
   {figure, caption etc.}
\end{wrapfigure}
%%%% fin exemple %%%%

* Le package 'flow' met obligatoirement la figure dans une boîte
avec un cadre et ne permet pas de définir de caption.

Exemple :
\flow[L|R]{paragraph text}{figure box}
%%%% fin exemple %%%%

* Le package 'window' de E. Schaluck, permet également
d'intégrer une figure dans un paragraphe mais il n'est plus
maintenu. Il a été écrit pour LaTeX2.09 mais il est compatible
LaTeX2e.

Exemple :
\windowbox[toplines][inwindow: contents][ratio: l r]
... paragraph text ... \par
%%%% fin exemple %%%%
	
	
Voici les résultats d'un test comparatif effectué par P. van
Oostrum :
	    A B C D E F G H I J K
picinipar  |+|+|+| |+|+| |+| | | |
wrapfig    |+|+|+|+| | |+|H|-|+| |
flow       |-|-|+| | | | |+| | | |
floatfig   |+|-|-|+| | |+| | |-| |
floatflt   |+|+|+|+| | |+| |-| |+|
window     |-|-|+| |+|+| |+| | | |
picins     |+|-|+|+| | | |+|+| | |

avec :
A: figure captions/counting/list of figures
B: table captions/counting/list of tables
C: Left/right possible (+ = both)
D: Alternating left/right for twosided docs
E: can be placed in the middle of text with twosided flowing
F: possible to start after the beginning of paragraph
G: can (more or less) float in the text
H: auto detection of size of figure (H=height only)
I: works with list environments
J: works with twocolumn
K: works with multicol

Les meilleurs packages semblent être :
picins, floatflt et wrapfig.

* Voici également une macro de C. Mercat :

%%%% debut macro %%%%
\def\textdess#1#2 % #1={blabla} #2=\dessin{monbodessin}
{\hbox{

\setbox2=\hbox{#2} %c'est le dessin

\count2=\wd2 %c'est la largeur du dessin.
%\showthe\count2
\multiply\count2 by-1
\advance\count2 by\hsize %count2 vaut le reste de la page
\advance\count2 by-2000000  %c'est pour la marge droite
\count1=\count2
\advance\count2 by-2000000  %c'est pour la marge du milieu
\setbox1=\hbox to\count1sp{     %c'est le texte
\vbox{\hsize=\count2sp  %c'est la largeur
#1
}\hfill}
\count1=\ht1  %c'est la hauteur
\advance\count1 \dp1

\count2=\ht2
\advance\count0 \dp2


\ifnum\count2<\count1 \count2=\count1 \fi 
%c'est la + grde des 2 hauteurs
\vtop to \count2sp {\vfill \box1 \vfill}
\vtop to \count2sp {\vfill \box2 \vfill}
}}

%%%% fin macro %%%%

# 8.17 # Comment réaliser des diagrammes en bâtons ?
----------------------------------------------------
Il existe le package 'bar', disponible sur CTAN dans
/macros/latex209/contrib/misc/, qui offre un environnement
barenv.

# 8.18 # Comment faire un organigramme ?
----------------------------------------
Il existe plusieurs contributions (toutes assez anciennes),
disponibles sur CTAN,  dédiées spécifiquement à la réalisation
de différents types d'organigrammes :
* /macros/latex209/contrib/nassflow/
* /macros/latex209/contrib/rail/
* /support/flow/
A priori, le dernier est le plus évolué et est basé sur un
pré-processeur écrit en langage C, ce qui fait qu'il offre une
interface souple et puissante.

# 8.19 # Comment centrer une figure très large ?
------------------------------------------------
Le package 'bigcenter' ci-dessous permet de centrer des figures
très larges sans message d'erreur de type overful.

%%%% debut macro %%%%
%%% ----------debut de bigcenter.sty--------------

%%% nouvel environnement bigcenter 
%%% pour centrer sur toute la page (sans overfull)

\newskip\@bigflushglue \@bigflushglue = -100pt plus 1fil

\def\bigcenter{\trivlist \bigcentering\item\relax}
\def\bigcentering{\let\\\@centercr\rightskip\@bigflushglue%
\leftskip\@bigflushglue
\parindent\z@\parfillskip\z@skip}
\def\endbigcenter{\endtrivlist}

%%% ----------fin de bigcenter.sty--------------
%%%% fin macro %%%%

# 8.20 # Comment passer de ps à eps ?
-------------------------------------
* S. Heiden :
Pour faire ce travail de transformation il faut interpréter TOUT
le code PostScript d'un fichier PS (être une imprimante PS en
gros), identifier la boîte englobante de ce qui est composé sur
UNE page et insérer vers le début ou la fin du fichier PS
original la fameuse ligne de la forme : 
	%%BoundingBox: 72 246 522 597 
qui renseigne les macros graphics, donc dvips, donc l'imprimante
sur cette fenêtre de clipping. 

Syntaxe: %%BoundingBox: llx lly urx ury 
Qui sont deux points (lower left)(x,y) et (upper right)(x,y)
définissant la fenêtre. Si on n'est pas, soi-meme, une
imprimante PostScript on peut faire interpréter le code PS
original par une imprimante qui produira une page. On peut alors
mesurer la boîte englobante et la position de la figure dans la
page (la portion de toner qui nous intéresse) et composer la
ligne %%BoundingBox en s'exprimant en points d'1/72 de pouces
et sachant que le système de coordonnées est :
- en bas à gauche de la page ;
- vers la droite et vers le haut ;
- légèrement décalé vers le centre. En effet, une imprimante
n'imprime jamais sur le bord réel d'une page. Il y a une fenêtre
de clipping systématique matérielle plus petite que la page A4
et centrée. L'origine du système correspond au coin de la
feuille ; le décalage du système de coordonnées arrive surtout
sur les coordonnées Y qui dépendent de l'avancement du papier
contrairement aux X, calés par les bords (qui n'a pas connu de
vieille imprimante LaserWriter pouvant louper de 5 cm le bord
inférieur d'une feuille A4 ?-). 

Si on fait calculer et imprimer la bbox par l'imprimante (par le
code de bbfig par ex.), ce problème ne se pose plus. Sans parler
de ps2epsi qui est la meilleure solution mais alors il faut
distinguer l'environment de chaque système d'exploitation (Unix,
Mac, PC) et les outils correspondants.

Remarque : Si on a plus d'une figure, que l'on s'intéresse à la
	   forêt amazonnienne ou que l'on est un peu riche, on 
	   peut acheter Adobe Distiller ou autre pour faire ce
	   genre de travail. Par ailleurs Ghostview peut jouer
	   le rôle de l'imprimante si l'écran est correctement
	   calibré (à vérifier avec xdpyinfo et une règle...).
	   En gros il faut un outil qui sait composer du
	   PostScript. Après, tout dépend de ce qu'il propose.

Suggestions :
- utiliser l'option "draft" pour que TeX visualise les boîtes
englobantes des figures (calculées à partir de %%BoundingBox).
- générer du EPSF natif à partir de l'outil de dessin plutôt que
de passer par PS->EPSF.

* Le document "Using EPS graphics in latex2e documents" de K.
Reckdahl répond également à cette question cf section 3.1
Converting PS files to EPS.

*  ps2epsi, qui est livré avec GhostScript permet de convertir
du postscript en postscript encapsulé.

# 8.21 # Comment changer l'orientation d'une figure ?
-----------------------------------------------------
* Le package 'rotfloat' disponible sur CTAN dans
/macros/latex/contrib/supported/rotfloat/ permet de gérer la
rotation des flottants.

* On peut utiliser la commande \rotatebox du package 'graphics'
de D. Carlisle. Ce package est disponible sur CTAN dans
/macros/latex/packages/graphics/.

Exemple : 
\rotatebox{90}{
\includegraphics{dessin1.eps}
}
%%%% fin exemple %%%%

* La commande \includegraphics du package 'graphicx' peut prendre
comme paramètre un angle de rotation.

Exemple :
\begin{figure}
   \centering
      \includegraphics[angle=90,width=\textwidth]{dessin.eps}
\end{figure}
%%%% fin exemple %%%%

# 8.22 # Comment gérer des sous-figures sur plusieurs pages ?
-------------------------------------------------------------
Un seul environnement figure ne peut pas s'étendre sur plusieurs
pages, il faut donc gérer le problème à la main en instanciant
les numéros "à la main".

Exemple :
\documentclass{article}
\usepackage{graphicx,subfigure}
\begin{document}

  \begin{figure}
    \centering
    \subfigure[First Part]{%
       \label{fig:graphics:a}% label for subfigure
       \includegraphics[width=\textwidth]{box.eps}}%
    \caption{Large Graphics}%
    \label{fig:graphics}% label for figure
  \end{figure}

  \addtocounter{figure}{-1}
  \begin{figure}
    \addtocounter{subfigure}{1}
    \centering
    \subfigure[Second Part]{%
       \label{fig:graphics:b}% label for subfigure
       \includegraphics[width=\textwidth]{box.eps}}%
    \caption{Large Graphics (con't)}%
  \end{figure}

\end{document}
%%%% fin exemple %%%%

# 8.23 # Comment générer une liste des figures d'un document ?
--------------------------------------------------------------
Il existe pour cela la commande \listoffigures. Elle collecte
tous les numéros de figures ainsi que leur titre et le numéro 
de la page ou elles apparaissent. 

Remarque : une bonne mise à jour de cette liste nécessite au
	   moins deux compilations successives.

# 8.24 # Comment faire une figure sous LaTeX ?
----------------------------------------------
* On distingue deux techniques majeures :
+ soit on utilise un logiciel de dessin et on inclut une figure
sous un format définit (en général postscript ou encapsulated
postscript). Pour une liste de logiciels, voir la question 25.1.
+ on utilise les commandes LaTeX disponibles. L'environnement
picture permet ainsi de composer des figures comprenant du
texte, des segments de droites, des cercles et des figures
géométriques.

Les commandes LaTeX les plus courantes pour le dessin sont :
+ \put(x, y){objet}
+ multiput
+ \line(x,y){longueur}
+ \vector
+ \shortstack
+ \circle
+ \circle*

Exemple :
\begin{picture}(largeur, hauteur)
   \put(0,0){\line(1,0){3}}
   \put(0,3){\line(1,1){4}}
\end{picture}
%%%% fin exemple %%%%

* Le package epic définit un ensemble de commandes plus
complet que l'ensemble par défaut de LaTeX. Il s'agit des
commandes : \multiputlist, \matrixput, \grid, \dottedline,
\dashline, \drawline, \jput, \picsquare et \putfile,
ainsi que des environnements : dottedjoin, dashjoin et drawjoin.

Exemple :
\matrixput(0,0)(10,0){6}(0,10){3}{\circle{4}}
\matrixput(2,0)(10,0){5}(0,10){3}{\line(1,0){6}}
\matrixput(0,2)(10,0){6}(0,10){2}{\line(0,1){6}}
%%%% fin exemple %%%%

* PSTricks de T. Van Zandt propose un ensemble très complet de
macros TeX qui permettent de jouer avec des dessins
(dessin, couleur, rotation, superposition, ...). L'ensemble
PSTricks est composé de plusieurs packages : pstricks, pst-plot,
multido, pst-node, pst-coil, gradient, colortab, textpath,
charpath et pst2eps. Une documentation d'une centaine de page
est également fournie et nécessaire.

ATTENTION : PSTricks fait appel à des macros postscript qui ne
	    sont donc pas toujours visibles dans les previewer 
	    de .dvi.

Exemple :
\psellipse(.5,0)(1.5,1)

\parametricplot[plotstyle=dots,plotpoints=13]%
	{-6}{6}{1.2 t exp 1.2 t neg exp}

\psshadowbox{\textbf Grest!!}

\pszigzag[coilarm=.5,linearc=.1{<->}(4,0)
%%%% fin exemple %%%%

# 8.25 # Comment mettre un commentaire à côté d'une figure ?
------------------------------------------------------------
Pour mettre un commentaire à côté d'une figure et pour que le
texte soit centrer verticalement par rapport à la figure, il
faut utiliser des \parbox.

Exemple :
\begin{tabular}{lc}
$M=0{,}01$ & \parbox[c]{12cm}{\includegraphics[width=12cm]{fig6a.eps}} \\
$M=0{,}1$  & \parbox[c]{12cm}{\includegraphics[width=12cm]{fig6b.eps}}
% etc...
\end{tabular}
%%%% fin exemple %%%%

================================================================
[9] INCLUSION DE FICHIERS
================================================================

# 9.1 # Comment inclure des fichiers en mode verbatim ?
-------------------------------------------------------
* Le package 'verbatim', de R. Schopf, permet via la commande
\verbatiminput, qui prend en argument un nom de fichier,
d'inclure un fichier en mode verbatim. Ce package est disponible
sur CTAN dans /macros/latex/distribs/ ou
/macros/latex/packages/tools/.

* L'environnement alltt du package du même nom (package dû à J.
Braams) permet la même prouesse tout en gardant active
l'interprètation des commandes LaTeX dont le nom commence par le
caractère \ (le "backslash" reste actif). Il est disponible dans
les archives CTAN dans /macros/latex/contrib/misc/ ou dans
/macros/latex/base/.

Exemple :
\begin{alltt}
   Notez la différence subtile entre $f(x)$ et \(f(x)\) grâce à
   l'utilisation du "backslash".
\end{alltt}
%%%% fin exemple %%%%

* Les commandes \listinginput et \verbatimtabinput du package
'moreverb' (disponible sur CTAN dans
/macros/latex/contrib/other/misc/) permettent d'inclure des
documents en mode verbatim avec ou sans numérotation des lignes
du fichier inclu. 

Exemple : 
{
\small
\listinginput[5]{10}{totor.c}
}
Les paramètres [5] et {10} indiquent que la numérotation des
lignes doit se faire de 5 en 5 en commençant à 10.
%%%% fin exemple %%%%

* Il existe aussi le package 'verbtext' disponible sur CTAN.

* Le package 'fancyvrb' est également disponible sur CTAN.

* Pour insérer du code lisp dans un document LaTeX, il existe le
package 'lispcode' disponible par ftp à
ki-server.informatik.uni-wuerzburg.de dans /pub/tex/.

* On peut aussi essayer le package 'verbasef' (verbatim
automatic segmentation of external files) disponible sur CTAN.
Il utilise l'environnement figure.

* Encore un autre, le package 'cprog' disponible sur CTAN dans
/macros/latex209/contrib/misc/ permet d'inclure des morceaux de
code dans un document et de les gérer comme des flottants.

* Le package 'sverb' de M. Wooding propose un environnement
listing.

# 9.2 # Comment gérer un document par parties ?
-----------------------------------------------
Pour travailler sur un gros document, il est plus agréable de le
découper en plusieurs fichiers. Il y aura quoiqu'il en soit un
fichier principal (celui qui comprend le préambule et les
commandes \begin{document} et \end{document}).

\input{fichier} permet d'inclure le fichier "fichier" dans le
fichier principal. Cette commande réalise une importation pure
et simple. Elle est plutôt réservée à l'importation de fichiers
de macros.

\include{chapitre} permet d'intégrer le fichier "chapitre.tex"
dans le document principal en commencant une nouvelle page.
Cette commande réinitialise la numérotation des titres. Utilisée
avec la commande \includeonly{chapitre}, cette commande  mise
dans le préambule, permet de ne recompiler le fichier principal
que sur les parties indiquées.

Remarque : la commande \include ne permet pas d'intégrer un
	   fichier contenant lui-même une commande \include.

Exemple :
\documentclass{report}
\includeonly{chap1, chap3}
\begin{document}
\include{chap1}
\include{chap2}
\include{chap3}
\end{document}
%%%% fin exemple %%%%

Remarque : avec le package 'french', pour que la numérotation 
	   des chapitres ne soit pas réinitialisée lorsqu'on
	   change de partie, il faut ajouter la commande
	   \noresetatpart  en début de document après le
	   \begin{document}

# 9.3 # Comment isoler une partie d'un fichier ps ou dvi ?
----------------------------------------------------------
Il faut utiliser un outil qui permet de découper en page :
+ un fichier postscript,
* il s'agit des outils PSnup, PStoPS, PSSelect, qui ont été portés
sur Mac, aussi bien pour MPW qu'en "stand-alone" (dans la
distribution CMacTeX)
* on peut également utiliser ghostview (save marked pages)
disponible par ftp à iphthf.physik.uni-mainz.de dans
/pub/gv/gv_2_7_b5.tar.gz

+ un fichier dvi ?
DVIDVI pour MPW (utilitaire qui fait bien d'autres choses que
de découper) doit permettre de faire cela. 

# 9.4 # Comment inclure un fichier PICT ?
-----------------------------------------
On peut utiliser la commande \special{pictfile mondessin.pict}
ou \put(0,0){\special{pict=Mondessin}}.

# 9.5 # Comment spécifier un chemin pour les fichiers à
-------------------------------------------------------
inclure ?
---------
* Il suffit d'utiliser la commande \import{chemin}{fichier}.
Elle évite de préciser le chemin ou se trouvent les fichiers
appelés par la commande \input à chaque appel.

%%%% debut macro %%%%
% import.sty: allows input of a file from another directory:
% 
% \import{path}{file}

\def\import{\begingroup 
  \protected@edef\@tempa{\endgroup
    \noexpand\@import{\@ifundefined{input@path}{}{\input@path}}%
    {\@ifundefined{Ginput@path}{}{\Ginput@path}}}%
  \@tempa}
\def\@import#1#2#3#4{%
  \def\input@path{{#3}#1}\def\Ginput@path{{#3}#2}%
  \input{#4}%
  \def\input@path{#1}\ifx\input@path\@empty \let\input@path\@undefined \fi
  \def\Ginput@path{#2}\ifx\Ginput@path\@empty \let\Ginput@path\@undefined \fi
}
%%%% fin macro %%%%

Exemple :
\import{Chapitres/}{chapitre1}
%%%% fin exemple %%%%

* Pour les figures, la package 'graphicx' propose la commande
\graphicspath à utiliser en tête de document.

Exemple : 
\graphicspath{{Chapitre1/gfx/}{Chapitre2/gfx/}}
%%%% fin exemple %%%%

* On peut égalemetn modifier certaines variables
d'environnement lorsqu'elles existent.

Exemple (UNIX) :
setenv TEXINPUTS= /home/figures/:"$TEXINPUTS"
%%%% fin exemple %%%%


================================================================
[10] HAUTS ET BAS DE PAGES
================================================================

# 10.1 # Comment définir les hauts et bas de page ?
---------------------------------------------------

Remarque : lorsque le haut ou bas de page définit est trop grand
	   on voit apparaître des messages d'erreur du style 
	   "Overfull \vbox". Il faut alors redimensionner la
	   longueur correspondante.

	   Exemple (dans le préambule) :
	   \addtolength{\headheight}{1.5pt}
	   %%%% fin exemple %%%%

* Par défaut, LaTeX offre la numérotation des pages en bas de
page (style plain). Mais, il propose également 3 autres  styles
de mise en page. Il s'agit des styles :
+ empty (hauts et bas de pages vides), 
+ headings(la numérotation des pages apparaît en haut ainsi que
différentes informations suivant la classe de document), et
+ myheadings (les commandes \markboth et \markright permettent
de définir les informations qui devront apparaître dans le haut
de page. \markboth{entête gauche}{entête droite} s'utilise pour
un document recto-verso alors que \markright{entête}
s'applique à toutes les pages d'un document en simple recto).

L'appel d'un style pour tout le document se fait via la commande
\pagestyle{style}. La commande \thispagestyle{} permet d'appeler
un style sur une page particulière. 

Remarque : malgré une déclaration globale de style de page, il
	   se peut que des déclarations locales de style soient 
	   également nécessaire, puisque certaines commandes
	   LaTeX réinitialisent le style de la page sur laquelle
	   elles apparaîssent.

* Le package 'fancyheadings', de P. van Oostrum, est disponible
sur CTAN dans /macros/latex209/contrib/fancyheadings/. Il est
compatible LaTeX2.09 et LaTeX2e. Il permet de définir des entêtes
et des pieds de page relativement facilement. La définition des
pages spéciales se fait par : \thispagestyle{xxx} ou xxx peut
être fancy (utilise les définitions ci-dessous sur une page en
respectant le style plain pour les autres ), plain (style TeX)
ou fancyplain(permet de redéfinir le style plain et donc de
disposer de deux styles : fancy et plain). L'application d'un
style à toutes les pages d'un document s'obtient par
\pagestyle{nom_style}.

Les macros principales sont :
+ pour les entêtes
\lhead[paire gauche]{impaire gauche}
\rhead[paire droit]{impaire droit}
\chead{centre}
+ pour les pieds de page
\lfoot[paire gauche]{impaire gauche}
\rfoot[paire droit]{impaire droit}
\cfoot{centre}

On distingue les styles fancy et plain par : 
\lhead[\fancyplain{paire gauche plain}{paire gauche fancy}]
{\fancyplain{paire gauche plain}{paire gauche fancy}}
Le style par défaut est alors plain.

Ce package définit quatre nouvelles longueurs :
+ \headrulewidth
+ \footrulewidth
+ \plainheadrulewidth
+ \plainfootrulewidth

Exemple :
\documentclass{article}
\usepackage{fancyheadings}
\pagestyle{fancy}
\usepackage{graphicx}
\renewcommand{\sectionmark}[1]{\markboth{#1}{}}
\renewcommand{\subsectionmark}[1]{\markright{#1}}
\rfoot{\leftmark\\\rightmark}
\lhead{\includegraphics[width=0.5cm]{foobar.ps}}

\begin{document}

   \section{Premiere section.}
      Intro.
      \subsection{Sous-section.}
	 Texte.
\end{document}
%%%% fin exemple %%%%

Remarque : sur certaines pages où le style de page est
	   réinitialisé par certaines commandes (telles que 
	   \tableofcontents), il faut repréciser le style voulu
	   via la commande \thispagestyle.

Exemple :
\addtocontents{toc}{\protect\thispagestyle{fancyplain}}
%%%% fin exemple %%%%
	   
* Le package 'fancyhdr' est le successeur du package
'fancyheadings' pour LaTeX2e. Il est disponible sur CTAN dans
/macros/latex/contrib/supported/fancyhdr/.

# 10.2 # Comment obtenir une note de bas de page ?
--------------------------------------------------
* La commande \footnote{texte} permet très facilement d'obtenir
des notes de bas de page sans se préoccuper de leur mise en
page.

* Le package 'ftn' disponible sur CTAN dans
/macros/latex209/contrib/misc/ permet d'étendre la commande
footnote à tous les environnements non flottant.

# 10.3 # Comment mettre les notes de bas de page en fin de
----------------------------------------------------------
document ?
----------
Le package 'endnotes', de J. Lavagnino, disponible sur CTAN
permet de faire cela. 

# 10.4 # Comment réduire les rappels de titres dans un haut ou
--------------------------------------------------------------
bas de page ?
-------------
Pour éviter que des titres trop longs n'apparaîssent dans les
entêtes ou les pieds de pages, il suffit de passer un titre
plus court en option des commandes de structuration de
document.

Remarque : dans ce cas, ce sont les titres courts qui
	   apparaîtrons dans la table des matières.

Exemple :
\documentclass{article}
\usepackage{fancyheadings}
\pagestyle{fancy}
\usepackage{graphicx}
\renewcommand{\sectionmark}[1]{\markboth{#1}{}}
\renewcommand{\subsectionmark}[1]{\markright{#1}}
\rfoot{\leftmark\\\rightmark}
\lhead{\includegraphics[width=0.5cm]{foobar.ps}}

\begin{document}

   \section[Titre résumé.]{Un titre trop long pour les rappels.}
      Intro.
      \subsection{Sous-section.}
	 Texte.
\end{document}
%%%% fin exemple %%%%

# 10.5 # Comment référencer une note de bas de page ?
-----------------------------------------------------
Il suffit simplement de définir un label à l'intérieur de la
commande \foonote et de la référencer par \ref.

Exemple :
bla bla bla\footnote{Notons que ce bla l\`a est diff\'erent des
pr\'ec\'edents\label{footnote-bla}}...

[...]

..., comme l'indique la note~\ref{footnote-bla}, ...
%%%% fin exemple %%%%

# 10.6 # Comment supprimer la numérotation des pages ?
------------------------------------------------------
* Pour supprimer la numérotation des pages, il faut utiliser la
commande \pagestyle{empty}. Si elle ne suffit pas, il faut en
plus utiliser \thispagestyle{empty} sur les pages où la
numérotation susbsite. Ce comportement se justifie par le
fait que certaines commandes comme \tableofcontents ou \chapter
réinitialisent le style de page sur laquelle ils apparaîssent.

* On peut également redéfinir le style plain à empty
\let\ps@plain=\ps@empty.

* Le package 'nopageno' de D. Carlisle, disponible sur CTAN
dans /macros/latex/contrib/supported/carlisle, de supprimer la
numérotation de toutes les pages même celles qui réinitialisent
le style de page.

# 10.7 # Comment numéroter les pages par rapport à la dernière ?
----------------------------------------------------------------
Pour pouvoir référencer les pages d'un document par rapport à la
dernière page (e.g. page 54/345), il faut utiliser le package
'lastpage' (disponible sur CTAN dans
/macros/latex/contrib/other/lastpage/).

Exemple :
\documentclass{report}
\usepackage{french}
\usepackage{lastpage}

\makeatletter
\renewcommand{\@evenfoot}%
	{\hfil \upshape page {\thepage} de \pageref{LastPage}}
\renewcommand{\@oddfoot}{\@evenfoot}
\makeatother

\begin{document}
Texte.
\end{document}
%%%% fin exemple %%%%

Si l'on ne dispose pas du package 'lastpage', on peut définir ce
label "à la main" en ajoutant \label{LastPage} juste avant
\end{document} ou encore en utilisant la commande
\AtEndDocument{\label{LastPage}} dans le préambule du document.

# 10.8 # Comment supprimer le trait de séparation des notes de
--------------------------------------------------------------
bas de page ?
-------------
Il suffit de mettre dans le préambule :
\renewcommand{\footnoterule}{}

# 10.9 # Comment modifier la numérotation des pages ?
-----------------------------------------------------
* Il faut modifier la commande \thepage.

Exemple (P. van Oostrum) :
\documentclass{report}
\usepackage{french}

\makeatletter
\renewcommand{\thepage}{\thechapter-\arabic{page}}
% chapter-page numbering
\@addtoreset{page}{chapter}
% reset page number when chapter is stepped
% The next magic makes the page counter be reset to one rather
% than zero
\def\@stpelt#1{\global\csname c@#1\endcsname
               \expandafter\ifx \csname#1\endcsname \page
                  \@ne
               \else
                  \z@ \fi}
\makeatother
\begin{document}
\chapter{Introduction}
Texte.
\end{document}
%%%% fin exemple %%%%

* Il existe également le package ci-dessous de A. Kielhorn.
%%%% debut macro %%%%
%% 
%% This is page-per-chapter-package
%% version 2.0
%%
%% Don't use it with refrep!
%% Refrep has these commands already implemented
%%
%% This version forces openright!!
%%
%% Index-commands should work in chapters and appedices,
%% they will not work as expected in the preface when the
%% pagenumbering is not arabic. (MakeIndex can't sort roman-
%% numbers)
%%
%% Bugs:
%%       The index is sortet according to the pagenumber
%%       without looking at the chapternumber.
%%       I don't think MakeIndex could handle that.
%%

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{pagepc}[1995/05/13]

\@ifundefined{chapter}
{\PackageError{pagepc}{%
  You can't number your pages per chapter\MessageBreak when you 
  have no chapters
  }{%
  Use ``report'' or ``book'' instead.
  }
}%
{}

%% Reset the pagecounter to 1 at the start of a new chapter
%%
\let\ppchapter=\@chapter
\def\@chapter{\if@pageperchapter\setcounter{page}{1}\fi
                    \ppchapter}

%% Force a pagebreak at the start of the appendix, otherwise
%% the number of the page right before the appendix comes
%% out wrong
%%
\let\ppappendix=\appendix
\def\appendix{\if@pageperchapter\newpage\fi\ppappendix}

\newif\if@pageperchapter \@pageperchapterfalse

%% This command enables Page-per-Chapter, it is *not* on by
%% default to allow roman pagenumbers in the preface
%% (see sample-document)
%%
\newcommand{\pageperchapter}
    {\@pageperchaptertrue
     \@openrighttrue
     % Remember old setting for chapter 0 = preface
     \let\ppthepage=\thepage
     % The new number needs more space
     \renewcommand\@pnumwidth{2.55em}
     % Here it comes :-)
     \renewcommand\thepage{%
       \ifnum \c@chapter = \z@
          \ppthepage
       \else
          \thechapter\ -- \arabic{page}
       \fi
       }
     }

%% This is a hack to make MakeIndex happy :-(
%% You can't use the |-form of an indexentry because
%% it is used to store the chapternumber.
%%
\def\@wrindex#1{%
   \ifnum \c@chapter = \z@
      \protected@write\@indexfile{}%
      {\string\indexentry{#1}{\arabic{page}}}%
      % The above is wrong if pagenumbering!=arabic,
      % but I think this is better than nothing.
   \else
       \protected@write\@indexfile{}%
      {\string\indexentry{#1|ppc{\thechapter}}{\arabic{page}}}%
   \fi
 \endgroup
 \@esphack
}

%% This prints the pagenumber in the index
%%
\def\ppc#1#2{#1 -- #2}

\endinput
%%%% fin macro %%%%

* Pour changer la valeur du compteur de page, il suffit
d'utiliser :
\setcounter{page}{17}.

# 10.10 # Comment supprimer les entêtes et bas de page de pages
---------------------------------------------------------------
vierges ?
---------
Lorsqu'on utilise l'option 'openright' pour faire débuter un
nouveau chapitre sur une page de droite dans un document
recto-verso, pour ne pas afficher les entêtes et bas de page sur
une page de gauche restée vierge, on peut utiliser la commande
suivante (cf. LaTeX companion) :

\newcommand{\clearemptydoublepage}{%
	\newpage{\pagestyle{empty}\cleardoublepage}}

Il est alors nécessaire d'utiliser cette commande avant
la commande \chapter.

# 10.11 # Comment gérer des en-têtes avec des environnements
------------------------------------------------------------
verbatim multi-pages ?
----------------------
Le problème consiste à inclure un fichier avec la commande
\input dans un haut ou bas de page alors que le corps du
document comprend des environnements verbatim qui s'étalent sur
plus d'une page. Dans ce cas, LaTeX au lieu d'interprêter la
commande \input fait un copier-coller du contenu du fichier
appelé par la commande \input (c'est comme si il était en mode
verbatim au moment de traiter le \input).

La solution consiste à utiliser une boîte via \savebox.

Remarque : cela ne marche que si les informations à imprimer ne
	   varient pas au fil des pages.

Exemple : 
\newsavebox{\logo}
\savebox{\logo}[2cm][c]{\input{logo-late.pstex_t}}
%%%% fin exemple %%%%

# 10.12 # Comment utiliser \footnote dans un titre ?
----------------------------------------------------
* Il faut utiliser la commande \protect.

Exemple :
   \section{Titre de section\protect\footnote{Commentaire sur 
      ce titre.}.} 
%%%% fin exemple %%%%

ATTENTION : le problème dans ce cas est que la note apparaîtra
	    aussi bien dans l'en-tête si l'en-tête rappelle le 
	    titre des sections que dans la table des matières.
	    Pour supprimer ces apparitions il faut alors
	    utiliser la même technique que pour les titres
	    résumés :
	    \section[foo]{foo\protect\footnote{foooo}}

* Il existe également le package 'stblftnt' de R. Fairbairns
disponible sur CTAN dans /macros/latex/contrib/other/misc/ qui
gère le problème énoncé ci-dessus sans avoir à réécrire tout
le titre.

# 10.13 # Comment placer les notes de bas de page les unes à
------------------------------------------------------------
côté des autres ?
-----------------
Il faut utiliser le package 'footnote', de R. Fairbairns,
disponible sur CTAN dans
/macros/latex/contrib/supported/footnote/ avec l'option para :
\usepackage[para]{footnote}.

# 10.14 # Comment réinitialiser le compteur de note de bas de
-------------------------------------------------------------
page à chaque page ?
--------------------
* Il faut utiliser le package 'footnote', de R. Fairbairns,
disponible sur CTAN dans
/macros/latex/contrib/supported/footnote/ avec l'option 
perpage : \usepackage[perpage]{footnote}

* Le package 'footnpag' disponible sur CTAN dans
/macros/latex/contrib/supported/footnpag/ permet également de
faire cela.

# 10.15 # Comment modifier le style des notes de bas de page ?
--------------------------------------------------------------
* Le package 'footnote' disponible sur CTAN dans
/macros/latex/contrib/supported/footnote/  permet de définir son
propre style de note de bas de page.

* Le package 'ftnright' de F. Mittelbach redéfinit le placement
des notes de bas de page dans un document multi-colonnes. Lors
de l'utilisation de ce package, les notes de bas de page
appelées dans une page seront réunies et placées à la fin de la
dernière colonne de cette page.

Remarque : Lorsque plusieurs packages sont utilisés
	   simultanément dans un même document, ftnright doit,
	   si possible, être appelé en dernier.

# 10.16 # Comment utiliser le mode verbatim dans une note de bas
----------------------------------------------------------------
de page ?
---------
Par défaut, le mode verbatim n'est pas accessible dans une note
de bas de page (et de manière générale inutilisable dans un
argument d'une autre commande). 
* On peut alors le forcer par :
\DeclareRobustCommand\espacement{{\fontencoding{OT1}
\selectfont \texttt{\char32}}}
* ou utiliser 
\tt sous LaTeX2.09
\texttt sous LaTeX2e

# 10.17 # Comment éviter qu'une note de bas de page s'étale sur
---------------------------------------------------------------
plusieurs pages ?
-----------------
* La commande \samepage peut permettre de forcer LaTeX à ne
pas couper le contenu d'une note de bas de page.

Exemple sans la commande :
Texte texte texte (1). Texte texte texte (2). Texte texte texte
(3). Texte texte texte (4). Texte texte texte (5). Un autre
texte\footnote{Un long long long long long long long long long
long long long long long long long long long long long long long
long long long long long long long long long long long long long
long long long long long commentaire sur cet autre texte.}.
Texte texte texte (6). Texte texte texte (7). Texte texte texte
(8). Texte texte texte (9). Texte texte texte (10). Texte texte
texte (11). Texte texte texte (12). Texte texte texte (13).
Texte texte texte (14). Texte texte texte (15). Texte texte
texte (16). Texte texte texte (17). Texte texte texte (18).
Texte texte texte (19). Texte texte texte (20). Texte texte
texte (21). Texte texte texte (22).
%%%% fin exemple %%%%

Exemple  avec :
Texte texte texte (1). Texte texte texte (2). Texte texte texte
(3). Texte texte texte (4). Texte texte texte (5). Un autre
texte\samepage\footnote{Un long long long long long long long
long long long long long long long long long long long long long
long long long long long long long long long long long long long
long long long long long long long commentaire sur cet autre
texte.}. Texte texte texte (6). Texte texte texte (7). Texte
texte texte (8). Texte texte texte (9). Texte texte texte (10).
Texte texte texte (11). Texte texte texte (12). Texte texte
texte (13). Texte texte texte (14). Texte texte texte (15).
Texte texte texte (16). Texte texte texte (17). Texte texte
texte (18). Texte texte texte (19). Texte texte texte (20).
Texte texte texte (21). Texte texte texte (22).
%%%% fin exemple %%%%

* On peut également utiliser une \parbox mais cela peut modifier
la structure de la page (empiètement du bas de page).

Exemple :
\footnote{\parbox[t]{0.94\linewidth}{This is a footnote ...}
%%%% fin exemple %%%%

* L'emploi de la commande \enlargethispage peut également
suffire.

* Une solution plus globale (et non pas au cas par cas comme les
solutions précédentes) consiste à redéfinir la pénalité associée
à \interfootnotelinepenalty. Cela permet de relâcher le critère
de beauté associé au placement des bas de page.

Exemple :
Mettre dans le préambule \interfootnotelinepenalty=10000.
%%%% fin exemple %%%%

Remarque : \raggedbottom permet en plus à LaTeX de ne pas
	   s'inquiéter si le corps de la note n'apparaît pas 
	   sur la même page que son appel.


================================================================
[11] LE FRANÇAIS ET LATEX
================================================================

# 11.1 # Comment franciser un document LaTeX ?
----------------------------------------------
* 'babel' version 3.6 disponible sur CTAN dans
/macros/latex/packages/babel/, est un package de J. Braams.
babel permet de composer des documents multi-lingues. Son appel
sous LaTeX2e se fait par \usepackage[langue_1, langue_2, ...,
langue_n]{babel}. 

Parmi les langues actuellement disponibles, on peut citer
english, german, italian, french, français. Le changement de
langue se fait via la commande  \selectlanguage. 

Exemple :
\selectlanguage{spanish}
%%%% fin exemple %%%%

La langue par défaut est la dernière de la liste passée en
paramètre à babel (langue n dans l'exemple précédent).

Ce package est le plus courant sur le plan international mais il
est souvent contesté en France. On lui préfère alors le package
'french'.

* Le package 'french' de B. Gaulle est disponible par ftp à
ftp.univ-rennes1.fr dans ./pub/gut/french/ ou sur CTAN
dans /language/french/. Lors de l'installation, respectez les
instructions d'installation accompagnant french.sty (une FAQ
est également disponible). Le fichier des motifs de césure est
désormais unique (frhyph.tex), que l'on travaille avec le codage
de fontes T1 ou OT1 (avec option MlTeX).

Remarque : Dans un fichier source (.tex), il est conseillé de
	   charger french après tous les autres packages.

french prend notamment en charge la mise en page, la traduction
des balises LaTeX visibles dans le document final (Chapitre,
Table des matières, ...), ....

ATTENTION : ces deux options (french et babel) ne sont pas
	    toujours parfaitement compatibles (les dernières
	    versions le sont french3,49 et babel 3.6).
	    
	    + \usepackage[francais]{babel} et
	    \usepackage[frenchb]{babel} font appel à l'option
	    frenchb maintenue par D.Flipo. 
	    + \usepackage[french]{babel} fait appel au package
	    french de B. Gaulle à condition que french ait été
	    installé (et plus particulièrement french.ldf) 
	    + les versions de tous ces packages sont très
	    importantes  (babel, frenchb, french) pour une bonne
	    coexistence. Une version 3.6 beta de Babel est sur
	    CTAN mais il parait  qu'il y avait un pb avec
	    french. Babel 3.5e et french V3.46 collaborent assez
	    bien dans tous les sens.   
	    + les fichiers de césure sont les mêmes pour babel
	    et pour french.
	    
ATTENTION : les dernières distributions de french (V4 et
	    post) ne sont plus compatible_ LaTeX 2.09 !	

# 11.2 # Comment corriger les coupures de mots accentués ?
----------------------------------------------------------
* Une solution consiste à utiliser MlTeX (multilingual TeX).
C'est le moteur TeX de M. Ferguson. Il permet en particulier de
gérer les coupures de mots accentués. Certaines des idées
utilisées dans ce moteur ont d'ailleurs été reprises par la
suite dans TeX V3.

* Suivant la fonte avec laquelle on travaille (i.e. suivant
qu'elle dispose des caractères accentués ou non), il peut
exister des problèmes d'interaction entre les lettres accentuées
et les règles de coupure des mots. En effet, l'utilisation d'une
fonte 7 bits impose que les caractères accentués soient
fabriqués par la macro \accent de TeX qui inhibe toute coupure
pour la suite du mot.

En LaTeX2e l'utilisation de fontes respectant la norme T1
(codage de Cork + 8 bits) permet d'éviter ces problèmes. Il faut
alors faire appel au package 'fontenc' :
\usepackage[T1]{fontenc}
Ce package nécessite que des fontes encodées T1 (suffisamment
récentes) aient été installées (fontes dc par exemple).

Il faut en outre utiliser des modèles de coupure de mot encodées
T1. Il existe pour cela deux fichiers disponibles sur CTAN.  Il
s'agit des fichiers fr8hyph.dc (ou mieux f8hyph, beaucoup plus
récent) pour un codage 8 bits (fonte avec caractères accentués
telle que dc) et fr7hyph (respectivement f7hyph) pour un codage
7 bits (accents TeX). L'association GUTenberg propose également
de tels fichiers (cf. french paragraphe 11.1).

* Il peut y avoir également un problème de versions,
l'algorithme de coupure des mots à changé entre les versions
2.9 et 3.0. Ainsi si vous utilisez Tex V.3.0 ou plus, il faut
veiller à ce que les fichiers plain.tex et lplain.tex soient
également en version 3.0 ou plus.

# 11.3 # Comment utiliser les lettres accentuées ?
--------------------------------------------------
* Les accents disponibles sous LaTeX sont présentés à la
question 29.57.

* Pour éviter ces commandes barbares d'accentuation des
caractères, on peut utiliser une fonte contenant toutes les
lettres accentuées nécessaires (code 8 bits). Si besoin, il faut
préciser un codage d'entrée via l'instruction : 
\usepackage[codage d'entree]{inputenc}  

L'option est rendue nécessaire par le fait que les codes de
caractères au-delà de 127 sont différents sous Dos, MacOS et 
Unix... Ainsi, le codage à preciser est latin1 pour un système 
Unix ou un PC sous Windows, applemac sous Mac adapté au français 
ou encore cp850 pour le code-page 850 sur PC (sous MS-DOS). Il
existe également ansinew, cp438, latin2 selon les systèmes. 

Exemple :
\usepackage[applemac]{inputenc}
%%%% fin exemple %%%%

ATTENTION : inputenc.sty « casse » les efforts faits par mlTeX
	    lorsqu'on utilise les fontes codées OT1 (fontes CMR
	    ou PostScript).

* mapcodes de M. Piotrowski autorise également un grand nombre
de codages de caractères (iso8859-1 (latin1), iso8859-2
(latin2), ibm850 ou 852, hproman8, etc).

# 11.4 # Comment composer du texte en grec moderne ou classique ?
-----------------------------------------------------------------
Il suffit d'utiliser l'option greek du package babel disponible sur CTAN. Son
site primaire est ftp://obelix.ee.duth.gr/pub/TeX/. La version 1.0 fournie
avec babel ne supporte pas les accents ni les marques de respirations par
contre la toute nouvelle version 1.1 les supporte.

On trouvera un fichier de césure de mots dans
ftp://obelix.ee.duth.gr/pub/TeX/hyphen.greek.

# 11.5 # Comment composer du texte en hébreux moderne ou
--------------------------------------------------------
classique ?
-----------
Il suffit d'utiliser le package ArabTeX 3.05 disponible sur CTAN. Son site
primaire est ftp://ftp.informatik.uni-stuttgart.de/pub/arabtex/.
Ce package permet la vocalisation mais pas les marques de
cantillation.

Exemple:
\documentclass{article}
\usepackage{arabtex,hebtex}
\setcode{standard}
\sethebrew

\begin{document}
Voici du texte en hébreux
\begin{arabtext}
yOm tOb
\end{arabtex}
Fin du texte en hébreux
\end{document}
%%%% fin exemple %%%%

# 11.6 # Comment composer du texte en arabe ?
---------------------------------------------
Il suffit d'utiliser le package ArabTeX 3.05 disponible sur CTAN. Son site
primaire est ftp://ftp.informatik.uni-stuttgart.de/pub/arabtex/.

# 11.7 # Comment définir les césures de groupes de mots
-------------------------------------------------------
conjugués avec un trait d'union ?
---------------------------------
(B. Gaulle) Par défaut, TeX coupe tout mot composé à l'endroit
exact du trait d'union et uniquement à cet endroit. Mais cela
peut se modifier. Dans ce but, j'ai  ajouté à french (V4,02) une
commande \allowhyphens qui permet de laisser à TeX le choix des
autres coupures dans le mot.

Remarque : la commande \hypenation ne permet pas d'intégrer un
	   trait d'union car ce caractère sert à indiquer un 
	   point de coupure et uniquement cela.

Voici donc la solution :
\showhyphens{{définissez\allowhyphens-le}
donne alors comme points de coupure : dé-fi-nis-sez-le


================================================================
[12] MATHÉMATIQUES
================================================================

# 12.1 # Comment passer en mode mathématique ?
----------------------------------------------
* Pour les mathématiques en ligne, il faut utiliser :
$ et $ ou 
\( et \) ou 
\begin{math} et \end{math}

Exemple :
Résoudre l'équation~:
$ 3 + 4 x = 0 $
%%%% fin exemple %%%%

* Pour les formules isolées, il faut utiliser les modes :
 $$ et $$ ou
 \[ et \] ou
 \begin{displaymath} et  \end{displaymath}.

Exemple :
Résoudre l'équation~:
$$ 
3 + 4 x = 0 
$$
%%%% fin exemple %%%%


* Avec l'environnement \displaystyle, on peut quand même avoir
une formule de style isolée dans le texte mais cela modifie
localement les interlignes.

Exemple :
Texte texte texte texte texte texte texte texte texte texte
texte texte texte texte texte texte texte texte texte texte
texte texte texte texte texte texte texte texte texte texte 
$\displaystyle \sum_{i=0}^n u_i $  texte texte texte texte 
texte texte texte texte texte texte texte texte texte texte 
%%%% fin exemple %%%%

* De même, on peut utiliser $\sum\limits{i=0}^n u_i$.

* Pour écrire des mathématiques sous LaTeX2e, les packages
'amsmath', disponible sur CTAN dans /fonts/ams/amslatex/, et
'amssymb' sont incontournables. En LaTeX2.09, on peut utiliser
'amstex', disponible sur CTAN dans /macros/amstex/, 'amsby' et
'amsopn' mais il faut savoir que amstex est obsolète.

ATTENTION : en mode mathématique, la gestion des espaces et des
	    retours à la ligne est entièrement prise en charge 
	    par LaTeX (cf. question 12.33). En outre, les lignes
	    vides ne sont pas autorisées.
	    
# 12.2 # Qu'est que AMS-LaTeX ?
-------------------------------
AMS-TeX est un terme utilisé pour désigner un ensemble de
fichiers distribués par l'American Mathematical Society (AMS).
AMS-LaTeX s'appuie sur TeX et LaTeX2e. AMS-LaTeX est
principalement dû a F. Mittelbach et R. Schopf. C'est un outil
complémentaire à LaTeX pour écrire des mathématiques (il devient
d'ailleurs rapidement indispensable). 

Il existe une FAQ disponible sur CTAN dans
/macros/latex/packages/amslatex/math/amslatex.faq

Les packages proposés sont 'amsmath' (complet), 'amstext' (pour
écrire du texte en mode mathématique), 'amsbsy' (pour les
symboles gras), 'amsopn' (pour la déclaration d'opérateurs),
'amsthm' (pour les environnements proof et theorem), 'amsintx'
(pour étendre la syntaxe des sommes et intégrales), 'amscd'
(pour les diagrammes commutatifs), 'amsxtra' et 'upref' (pour
les références croisées).

Ces packages sont disponibles par ftp à e-math.ams.org dans
pub/tex/amslatex/. Il faut également récupérer les fontes
associées dans /pub/tex/amsfonts/, /pub/tex/amsltx11/ et
/pub/tex/amstex/. Sur CTAN, les directories correspondantes sont
/macros/latex/packages/amslatex/, /fonts/amsfonts/,
/macros/latex209/contrib/amslatex/ et /macros/amstex/.
Il existe également le site WEB http://www.ams.org/tex.

# 12.3 # Comment écrire les symboles d'ensembles ?
--------------------------------------------------
Un peu d'histoire (T. Bouche) : au temps jadis, dans les livres,
les symboles d'ensemble étaient imprimés en gras pour qu'on les
voie bien. Problème, comment, lorsque l'on écrit sur un tableau
noir, maintenir ce type de distinction ? En fait, au lieu
d'écraser la craie avec force sur le tableau pour élargir un
trait, on a décidé de le doubler. Ce qui est comique, c'est
qu'en retour, les livres se sont mis à copier l'usage des profs,
et ont distingué le "gras" (bold), du "gras de tableau" qui est
une fonte à part (dessin normal à barre redoublée). 

* Les symboles mathématiques d'ensemble et bien d'autres sont
disponibles par défaut dans les fontes AMS : famille msam
(e.g., msam10 pour 10pt) et msbm. Ces fontes sont disponibles
par ftp anonyme à e-math.ams.org dans /pub/tex/amsfonts ou sur
CTAN dans /fonts/ams/amsfonts/sources/symbols/. Pour avoir accès
aux symboles, il faut alors utiliser les packages 'amsfonts' et
'amssymb'.

Exemple :
soit on définit une commande spéciale (dans le préambule):
	\newcommand{\R}{\mathbb{R}}

et on utilise :

	$\R$
	
soit on tape directement :

	$\mathbb{R}$ (LaTeX2e) ou 
	
	${\Bbb R}$ (LaTeX2.09)
%%%% fin exemple %%%%

* Si vous ne disposez pas des packages ams vous pouvez au grand
dam de certains puristes utiliser les commandes :
+ pour les naturels :
	\def\N{\mbox{I\hspace{-.15em}N}}
+ pour les entiers :
	\def\Z{\mbox{Z\hspace{-.3em}Z}}
+ pour les reels :
	\def\R\mbox{I\hspace{-.15em}R}}
+ pour les complexes :
	\def\C{\mbox{l\hspace{-.47em}C}}
+ ...

Il faut savoir dans ce cas que leur utilisation est limitée :
pas de mise en indice, exposant, etc.

* C. Fiorio (fiorio@math.tu-berlin.de) propose également un
certain nombre de macros (LaTeX2e) :

%%%% debut macro %%%%
%
%%  Les ensembles de nombres
%
\def\nbR{\ensuremath{\mathrm{I\!R}}} % IR 
\def\nbN{\ensuremath{\mathrm{I\!N}}} % IN 
\def\nbF{\ensuremath{\mathrm{I\!F}}} % IF 
\def\nbH{\ensuremath{\mathrm{I\!H}}} % IH
\def\nbK{\ensuremath{\mathrm{I\!K}}} % IK
\def\nbL{\ensuremath{\mathrm{I\!L}}} % IL
\def\nbM{\ensuremath{\mathrm{I\!M}}} % IM
\def\nbP{\ensuremath{\mathrm{I\!P}}} % IP
%
% \nbOne : 1I : symbol one
\def\nbOne{{\mathchoice {\rm 1\mskip-4mu l} {\rm 1\mskip-4mu l}
{\rm 1\mskip-4.5mu l} {\rm 1\mskip-5mu l}}}
%
% \nbC   :  Nombres Complexes
\def\nbC{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm C$}%
\hbox{\hbox to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}
{\setbox0=\hbox{$\textstyle\rm C$}\hbox{\hbox
to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}
{\setbox0=\hbox{$\scriptstyle\rm C$}\hbox{\hbox
to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}
{\setbox0=\hbox{$\scriptscriptstyle\rm C$}\hbox{\hbox
to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}}}
%
% \nbQ   : Nombres Rationnels Q
\def\nbQ{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm
Q$}\hbox{\raise
0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}}
{\setbox0=\hbox{$\textstyle\rm Q$}\hbox{\raise
0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}}
{\setbox0=\hbox{$\scriptstyle\rm Q$}\hbox{\raise
0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}
{\setbox0=\hbox{$\scriptscriptstyle\rm Q$}\hbox{\raise
0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}}}
%
% \nbT   : T
\def\nbT{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm
T$}\hbox{\hbox to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}
{\setbox0=\hbox{$\textstyle\rm T$}\hbox{\hbox
to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}
{\setbox0=\hbox{$\scriptstyle\rm T$}\hbox{\hbox
to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}
{\setbox0=\hbox{$\scriptscriptstyle\rm T$}\hbox{\hbox
to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}}}
%
% \nbS   : S
\def\nbS{{\mathchoice
{\setbox0=\hbox{$\displaystyle     \rm S$}\hbox{\raise0.5\ht0%
\hbox to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox
to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}}
{\setbox0=\hbox{$\textstyle        \rm S$}\hbox{\raise0.5\ht0%
\hbox to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox
to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}}
{\setbox0=\hbox{$\scriptstyle      \rm S$}\hbox{\raise0.5\ht0%
\hboxto0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0%
\hbox to0pt{\kern0.5\wd0\vrule height0.45\ht0\hss}\box0}}
{\setbox0=\hbox{$\scriptscriptstyle\rm S$}\hbox{\raise0.5\ht0%
\hboxto0pt{\kern0.4\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0%
\hbox to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}}
%
% \nbZ   : Entiers Relatifs Z
\def\nbZ{{\mathchoice {\hbox{$\sf\textstyle Z\kern-0.4em Z$}}
{\hbox{$\sf\textstyle Z\kern-0.4em Z$}}
{\hbox{$\sf\scriptstyle Z\kern-0.3em Z$}}
{\hbox{$\sf\scriptscriptstyle Z\kern-0.2em Z$}}}}
%%%% fin macro %%%%

Exemple :
$ \nbN $ pour les entiers naturels
%%%% fin exemple %%%%

* Autres alternatives :
en metafont:
+ les fontes 'bbold' d'A. Jeffrey (une sorte de Futura vraiment
doublé par endroit, pas détouré - mais du coup pas du tout du
même style que les autres lettres du mode mathématique)

Exemple :
\font\bbold=bbold12
\newcommand{\R}{\mbox{\bbold R}}
%%%% fin exemple %%%%

en postscript  (produits commerciaux)
+ dextor outline 
+ Mathematical Pi (une sorte d'helvetica doublé par endroit)

* Le package 'bbm' disponible sur CTAN dans /fonts/cm/bbm/
propose certaines variantes pour les fontes Computer Modern.

# 12.4 # Comment numéroter les équations ?
------------------------------------------
* Sous LaTeX2e, les options de classe leqno et fleqn permettent
d'indiquer si les numéros d'équations doivent apparaître à
droite ou à gauche des équations.

Exemple, pour que les numéros apparaîssent à gauche :
\documentclass[leqno]{report}
\begin{document}
\begin{eqnarray}
   x + 4 & =  & 0 \\
   8 - y & =  & 0 
\end{eqnarray}
%%%% fin exemple %%%%

* Pour supprimer la numérotation des équations, il suffit
d'ajouter le caractère * aux noms des environnements d'équation.

Exemple :
\begin{eqnarray*}
   x + 4 & =  & 0 \\
   8 - y & =  & 0 
\end{eqnarray*}
%%%% fin exemple %%%%

* Pour supprimer la numérotation d'une ligne particulière dans
un groupe d'équations, il suffit d'utiliser la commande
\nonumber (avant les \\). Avec amsmath, il faut utiliser \notag.

* Pour réinitialiser le compteur d'équations dans chaque
section, il faut inclure :
%%%% debut macro %%%%
\makeatletter
\renewcommand\theequation{\thesection.\arabic{equation}}
\@addtoreset{equation}{section}
\makeatother
%%%% fin macro %%%%
dans le préambule.

Remarque : dans ce cas, il ne faut pas mettre d'équation dans un
	   chapitre avant la première section sous peine d'avoir 
	   un numéro du style 3.0.1.

* Pour modifier le style de numérotation, il faut modifier la
commande \theequation.

Exemple 1 :
\documentclass{report}
\usepackage{french}
\pagestyle{empty}
\renewcommand{\theequation}{\thesection \Alph{equation}}
\begin{document}
\chapter{Systèmes d'équations.}
   \section{À une variable.}
      \begin{eqnarray}
	 x + 4 & =  & 0 \\
	  x & =  & 3 
      \end{eqnarray}
   \section{À deux variables.}
      \begin{eqnarray}
	 x + 4 & =  & 0 \\
	 8 - y & =  & 0 
      \end{eqnarray}
\end{document}
%%%% fin exemple %%%%

Exemple 2 (pour avoir les numéros entre crochets) :
\makeatletter
\renewcommand{\@eqnnum}{{\normalfont\normalcolor\theequation}} 
\renewcommand{\theequation}{[\arabic{equation}]}
\makeatother

\begin{document}
      \begin{eqnarray}
	 x + 4 & =  & 0 \\
	 y - 2 & =  & 0
      \end{eqnarray}
%%%% fin exemple %%%%

* Avec le package 'amsmath', disponible sur CTAN dans
/fonts/ams/amslatex/, la commande \numberwithin permet de
numéroter les équations suivant le paragraphe auquel elles
appartiennent. Il faut alors appeler : 
\numberwithin{equation}{section} dans le préambule. 

* Les packages 'seceqn' et 'apeqnum' disponibles sur CTAN
permettent pour le premier de numéroter les équations par
section et pour le second de numéroter individuellement les
équations dans les annexes.

* Le package 'deleq' disponible sur CTAN dans
/macros/latex/contrib/supported/ ou dans
/macros/latex/contrib/other/deleq/ permet de définir un label
par groupe d'équations (4) en plus des labels individuels de
type (4a), (4b), etc.

* La commande \tag{xxx} du package 'amsmath' sous LaTeX2e permet
de personnaliser la numérotation des équations. 

Exemple : pour permettre à deux équations d'avoir le même
numéro :
\begin{equation}
  x - y = 0
  \label{equa}
\end{equation}
...
\begin{equation}
  x = y
  \tag{\eqref{equa}}
\end{equation}
%%%% fin exemple %%%%

Remarque : \eqref remplace \ref pour les équations : la fonte
	   utilisée est toujours la même (c'est plus beau).

* Les environnements subequations (du package 'amsmath') et
subeqnarray (du package 'subeqnarray') permettent de référencer
différentes lignes d'un même groupe d'équations par des indices
(3.a), (3.b), etc. 
+ Sous subequations, une référence à une ligne particulière
s'obtient alors par un \label placé sur cette ligne alors qu'une
référence au système d'équation s'obtient par un \label placé
immédiatement après \begin{subequations}. 

Exemple :
\begin{subequations} \label{E:gp}
  \begin{gather}
    x_1 x_2 + x_1^2 x_2^2 + x_3 \label{E:gp1} \\
    x_1 x_3 + x_1^2 x_3^2 + x_2 \label{E:gp2} \\
    x_1 x_2 x_3 \label{E:gp3}
  \end{gather}
\end{subequations}

[...]

Voir le système~\ref{E-gp} et en particulier
l'équation~\ref{E-gp2}.
%%%% fin exemple %%%%

Remarque : c'est le \\ qui incrémente le compteur des
	   sous-références.

+ Sous subeqnarray une référence à une ligne particulière se
fait alors par \slabel au lieu de \label.

# 12.5 # Comment aligner des équations ?
----------------------------------------
* Pour aligner des équations sur un signe de relation, il suffit
sous LaTeX d'appeler l'environnement eqnarray avec ou sans la
commande \lefteqn ou si l'on dispose du package
'amsmath', disponible sur CTAN dans /fonts/ams/amslatex/,
d'utiliser un des environnements split, multline, align ou
flalign.

Exemples :

\begin{align}
   f(x) & = & x^2 + 8x + 16 \\
   & = & (x+4)^2
\end{align}

\begin{eqnarray}
   \lefteqn{x + 3y - 6z} \\
   & = & -4a + 5b -7b \\
   & = & -4a - 2b
\end{eqnarray}

\begin{align}
   \begin{split}
      A &= B + C + D + E + F + G \\
      &\quad + H + I
   \end{split} \\
   F &= G + H
\end{align}
%%%% fin exemple %%%%

 * L'environnement equationarray du package 'eqnarray' associe
 les  avantages des environnements eqnarray et array. Il n'est
 pas  limité en nombre de colonnes.

* Pour produire le système d'équations suivant : 
	 x  = y  + z
	 x1 = y1 + z1 
on peut utiliser l'environnement alignat du package 'amsmath'.
Toutefois, il faut noter que cet environnement est alors
détourné de son utilisation normale. En effet, ce dernier est
prévu pour aligner des objets différents sur des colonnes
alternativement justifiées à droite puis à gauche. L'utilisation
de colonnes vides permet alors de choisir la justification
voulue. D'autre part l'utilisation de {} permet d'obtenir des
espacements "normaux".

Exemple :
\begin{alignat}{2}
   x & = y &&+ z\\
   x_1 & = y_1 &&+ z_1  
\end{alignat}

\begin{alignat}{5}
    10a& ={}&  3x&& 3y& +{}& 18z&& 2w&\\
     6a& ={}& 17x&&   & +{}&  5z&& 19w&
\end{alignat}
%%%% fin exemple %%%%

* Le package 'mathenv' disponible sur CTAN propose un éventail
d'environnements mathématiques pour aligner des entités en
colonne.

# 12.6 # Comment générer des vecteurs ?
---------------------------------------
* Il suffit d'utiliser le package 'amsmath', disponible sur CTAN
dans /fonts/ams/amslatex/, et d'appeler la commande
\overrightarrow.

Exemple : 
Le vecteur $\overrightarrow{u}$
%%%% fin exemple %%%%

* On peut également définir ses propres flèches notamment pour
régler leur hauteur par rapport aux lettres qu'elles surmontent.
La solution présentée ci-dessous utilise les packages 'amsmath',
'amssymb' et 'xy' :
%%%% debut macro %%%%
\newcommand{\xyflecheverladroite}
{\mbox{\xymatrix{*{\hphantom{OM}}\ar[]+L;[]+R}}}

\newcommand{\ra}[1]
{\mathchoice
{\overset{\mbox{\xymatrix{*{\hphantom{\displaystyle #1}}
\ar[]+L;[]+R}}}{\displaystyle #1}}%
{\overset{\mbox{\xymatrix{*{\hphantom{\textstyle #1}}
\ar[]+L;[]+R}}}{\textstyle #1}}%
{\overset{\mbox{\xymatrix{*{\hphantom{\scriptstyle #1}}
\ar[]+L;[]+R}}}{\scriptstyle #1}}%
{\overset{\mbox{\xymatrix{*{\hphantom{\scriptscriptstyle #1}}
\ar[]+L;[]+R}}}{\scriptscriptstyle #1}}% }

%Pour changer la distance de la flèche, on peut procéder ainsi.
%\renewcommand{\ra}[1]
%{\overset{\raisebox{-1pt}{\mbox{\xymatrix{*{\hphantom{#1}}
%\ar[]+L;[]+R}}}}{#1}}
%%%% fin macro %%%%

Exemples :
$$ \ra{OM} $$
$\ra{OM}$ 
$\ra{OM_i}$ 
$$ \ra{OM} _{\ra{OM}_{\ra{OM}}}$$
%%%% fin exemple %%%%

* Le package 'vector', de N. Efford, est disponible sur CTAN
dans /macros/latex/contrib/supported/vector/. Il offre notamment
un certain nombre de vecteurs utiles aux physiciens et des
commandes automatiques d'énumération des coordonnées.

Exemple :
$(\irvec[4]x)$

$\bvec{y} = \left[ \cvec{y}{0}{3} \right]$
%%%% fin exemple %%%%

* Le package 'easyvector' disponible sur CTAN dans
/macros/latex/contrib/supported/easy/ permet de définir des
vecteurs suivant une syntaxe de type C.

# 12.7 # Comment écrire du texte en mode mathématique ?
-------------------------------------------------------
* La commande \text{xxx} du package 'amsmath', disponible sur
CTAN dans /fonts/ams/amslatex/, permet d'inclure du texte dans
une formule mathématique sans que les accents et les espacements
mathématiques ne soient nécessaires.

* La commande \textrm{xxx} du package 'amsmath' (ou amstext)
permet en outre de prendre en compte la taille de la fonte
courante.

Exemple : 
La fonction~: $ f_{\textrm{tracage}}  $ sert au tracé de
courbes.
%%%% fin exemple %%%%

* Il est également possible d'utiliser la commande \mbox.

Remarque : aucune de ces commandes ne gère les retours à la
	   ligne en fin de ligne.

# 12.8 # Comment ajuster la taille de délimiteurs ?
---------------------------------------------------
* Pour ajuster la taille de délimiteurs tels que les
parenthèses, les accolades, etc, il suffit d'utiliser les
commandes \left et \right.

Remarque : si l'on veut utiliser un seul délimiteur (sans son
	   symétrique) il faut utiliser \right. en fermeture.

Exemples :
$\left( \frac{1}{2} \right)$

$\left \{ \mathrm{et} \right \}$

Résoudre le système~:
\[
\left \{ 
\begin{array}{ccc}
   x + y & = & 0 \\ 
   x - y & = & 0
\end{array}
\right.
\]
%%%% fin exemple %%%%

Remarque : Pour changer la taille des délimiteurs de façon
	   relative à la taille des données qu'ils encadrent, 
	   c'est le paramètre \delimitershortfall qui est
	   utilisé. Lorsqu'il vaut 0pt, les délimiteurs qu'il
	   contrôle sont au plus aussi grands que le contenu
	   qu'ils encadrent ; pour que les délimiteurs puissent
	   être plus grands que leur contenu, il faut donner une
	   valeur négative à \delimitershortfall.

* Pour imposer son propre choix de taille de délimiteurs
notamment pour des délimiteurs imbriqués, il existe les
commandes \big, \Big, \bigg et \Bigg.

Exemples :
$\Big( (x+1) (x-1) \Big) ^{2}$

$\big\{\Big\{\bigg\{\Bigg\{$
%%%% fin exemple %%%%

# 12.9 # Comment changer de fonte en mode mathématique ?
--------------------------------------------------------
* Il faut utiliser les packages 'amsmath' ou 'amssymb' puis :
+ pour du gothique
\frak{Texte} en LaTeX2.09 
\mathfrak{Texte} en LaTeX2e

+ pour du caligraphique gras :
\boldsymbol{\mathcal{TEXTE}}
on peut aussi générer tout l'alphabet correspondant :
\DeclareSymbolFont{boldsymbols}{OMS}{cmsy}{b}{n}
\DeclareSymbolFontAlphabet{\mathbfcal}{boldsymbols}
puis utiliser la commande \mathbfcal

Remarque : La commande \mathcal ne marche qu'avec des
	   majuscules.

+ pour du gras italique :
\DeclareMathAlphabet\mbi{OML}{cmm}{b}{it}
ou
\DeclareSymbolFont{mathbold}{OML}{cmm}{b}{it}
\DeclareMathSymbol{\biGamma}{\mathord}{mathbold}{0}

+ pour des symboles en gras :
\boldsymbol{\alpha}
ou
\DeclareSymbolFont{mathbold}{OML}{cmm}{b}{it}
\DeclareMathSymbol{\balpha}{\mathord}{mathbold}{11}

Remarque : si cela ne marche pas, c'est que les caractères gras
	   correspondants n'existent pas. Il faut alors soit
	   utiliser la commande \pmb{...} soit utiliser un
	   package supplémentaire tel que 'amsbsy'. Il existe
	   par ailleurs des versions postscript de fontes AMS
	   disponibles sur CTAN. 
	   
* Sous LaTeX2e, il existe un certain nombre de commandes de
changement de fonte. Il s'agit de :
+ mathcal pour du calligraphique (argument en majuscule),
+ mathrm pour du roman,
+ mathbf pour du gras,
+ mathsf pour du sans serif,
+ mathtt pour du typewriter (machine à écrire),
+ mathnormal pour revenir à la fonte par défaut,
+ mathit pour de l'italique.

* Pour écrire toute une formule en gras, on peut aussi utiliser
la commande \mathversion{xxx} de LaTeX2e. xxx peut valoir bold
ou normal.

Exemple :
Une formule importante~:
\mathversion{bold}
$$\sum_{i=0}^n u_i + v_i$$

Une formule moins importante~:
\mathversion{normal}
$$\sum_{i=0}^n v_i$$
%%%% fin exemple %%%%

* Le package 'bm' disponible sur CTAN dans
/macros/latex/contrib/supported/bm/ permet de bien gérer les
symboles mathématiques en gras.

# 12.10 # Comment obtenir le L de la transformée de Laplace ?
-------------------------------------------------------------
Pour obtenir le L de la transformée de Laplace, il faut
utiliser le package 'mathrsfs' puis la commande
\renewcommand{\L}{\mathscr{L}}.

Remarque : ce package fait appel à des fontes particulières
	   qu'il faut également installer.

# 12.11 # Comment réaliser un tableau en mode mathématique ?
------------------------------------------------------------
Il faut utiliser l'environnement array.

Exemple :
Résultats~:
\[
\begin{array}{|c @=c|}
   \hline
   \alpha + \beta & 12 \\ 
   \hline
   \sqrt{\gamma} & 36 \\
   \hline
\end{array}
\]
%%%% fin exemple %%%%

# 12.12 # Comment obtenir d'autres symboles mathématiques ?
-----------------------------------------------------------
* LaTeX propose un grand nombre de commandes de symboles.

+ pour les opérateurs binaires :
   \pm       \cap       \diamond          \oplus
   \mp       \cup       \bigtriangleup    \ominus
   \times    \uplus     \bigtriangledown  \otimes
   \div      \sqcap     \triangleleft     \oslash
   \ast      \sqcup     \triangleright    \odot
   \star     \vee       \wedge            \bigcirc
   \dagger   \setminus  \amalg            \circ
   \ddagger  \cdot      \wr               \bullet
   \lhd      \rhd       \unlhd            \unrhd

+ pour les opérateurs de relation :
   \leq         \geq         \equiv   \models
   \prec        \succ        \sim     \perp
   \preceq      \succeq      \simeq   \mid
   \ll          \gg          \asymp   \parallel
   \subset      \supset      \approx  \bowtie
   \subseteq    \supseteq    \cong    \Join
   \sqsubset    \sqsupset    \neq     \smile
   \sqsubseteq  \sqsupseteq  \doteq   \frown
   \in          \ni          \propto
   \vdash       \dashv

+ pour les opérateurs fléchés :
   \leftarrow          \longleftarrow        \uparrow
   \Leftarrow          \Longleftarrow        \Uparrow
   \rightarrow         \longrightarrow       \downarrow
   \Rightarrow         \Longrightarrow       \Downarrow
   \leftrightarrow     \longleftrightarrow   \updownarrow
   \Leftrightarrow     \Longleftrightarrow   \Updownarrow
   \mapsto             \longmapsto           \nearrow
   \hookleftarrow      \hookrightarrow       \searrow
   \leftharpoonup      \rightharpoonup       \swarrow
   \leftharpoondown    \rightharpoondown     \nwarrow
   \rightleftharpoons  \leadsto

+ autres opérateurs :
   \sum      \bigcap      \bigodot
   \prod     \bigcup      \bigotimes
   \coprod   \bigsqcup    \bigoplus
   \int      \bigvee      \biguplus
   \oint     \bigwedge
   
+ autres symboles :
   \aleph   \prime      \forall      \infty
   \hbar    \emptyset   \exists      \Box
   \imath   \nabla      \neg         \Diamond
   \jmath   \surd       \flat        \triangle
   \ell     \top        \natural     \clubsuit
   \wp      \bot        \sharp       \diamondsuit
   \Re      \|          \backslash   \heartsuit
   \Im      \angle      \partial     \spadesuit
   \mho

* Des symboles mathématiques supplémentaires (en plus de ceux
offerts par amsmath) sont disponibles dans les packages
'stmaryrd' disponible sur CTAN dans /fonts/stmaryrd/, et
'yhmath' également disponible sur CTAN dans
/macros/latex/contrib/supported/yhmath.

# 12.13 # Comment définir une fonction ?
----------------------------------------
* Il existe un certain nombre de fonctions définies par défaut.
Il  s'agit des fonctions :
 \arccos  \cos   \csc  \exp   \ker     \limsup  \min   \sinh
 \arcsin  \cosh  \deg  \gcd   \lg      \ln      \Pr    \sup
 \arctan  \cot   \det  \hom   \lim     \log     \sec   \tan
 \arg     \coth  \dim  \inf   \liminf  \max     \sin   \tanh

* On peut utiliser la commande \mathop :
\newcommand{\fonction}{\mathop{fonction}}
Si on utilise en plus la commande \nolimits, on peut déterminer
la gestion des indices et exposants de cette fonction. 

Exemple :
\newcommand{\rad}{\mathop{\mathrm{rad}}}
\newcommand{\radn}{\mathop{\mathrm{rad}}\nolimits}

\begin{document}
\[
\alpha \rad_{t \rightarrow \infty} = 0
\]

\[
\alpha \radn_{t \rightarrow \infty} = 0
\]
\newcommand{\rad}{\mathop{\mathrm{rad}}}
\newcommand{\radn}{\mathop{\mathrm{rad}}\nolimits}

\begin{document}
\[
\alpha \rad_{t \rightarrow \infty} = 0
\]

\[
\alpha \radn_{t \rightarrow \infty} = 0
\]
\end{document}
%%%% fin exemple %%%%

* Sous LaTeX2e, le package 'amsopn' est disponible sur CTAN dans
/fonts/ams/amslatex/ et par ftp à e-math.ams.org dans
/pub/tex/amslatex/inputs/. Il permet de déclarer de nouvelles
fonctions qui seront gérées comme une fonction mathématique
(gestion de la fonte, disposition des indices et exposants, etc).
Pour cela il faut déclarer une commande du type : 
\DeclareMathOperator{\fonction}{fonction} dans le préambule du
document. Pour que les indices et exposants de la nouvelle
fonction puissent être géres comme ceux de la fonction \sum , il
faut alors plutot utiliser \DeclareMathOperator*.

* De même, le package 'amstex' (LaTeX2.09) définit les commandes
\operatorname et \operatornamewithlimits.

Exemple :
$\operatorname{rad}$
%%%% fin exemple %%%%

# 12.14 # Comment définir une matrice ?
---------------------------------------
* Il suffit de construire un tableau sans lignes avec
l'environnement array.

Exemple :
\[
\begin{array}{ccc}
   x_{11} & \cdots & x_{1p} \\
   \vdots & \ddots & \vdots \\
   x_{n1} & \cdots & x_{np} 
\end{array}
\]
%%%% fin exemple %%%%

Pour encadrer cette matrice avec des délimiteurs, cf. 
paragraphe 12.8.

* Le package 'amsmath',disponible sur CTAN dans
/fonts/ams/amslatex/, permet de définir une matrice de manière
plus rapide qu'avec l'environnement array. Les environnements
disponibles sont : 
+ matrix,
+ pmatrix pour une matrice encadrée par des parenthèses,
+ bmatrix pour une matrice encadrée par des crochets,
+ vmatrix pour une matrice encadrée par des lignes verticales,
+ Vmatrix pour une matrice encadrée par des doubles lignes
verticales.

Exemple :
\[
\begin{pmatrix} 
         a & b \\
         c & d 
\end{pmatrix}
\]
%%%% fin exemple %%%%

* Le package 'easybmat' disponible sur CTAN dans
/macros/latex/contrib/supported/easy/ permet facilement d'écrire
des matrices par bloc.

* Le package 'easymat' disponible sur CTAN dans
/macros/latex/contrib/supported/easy/ facilite également
l'écriture de matrices.

# 12.15 # Comment encadrer des formules ?
-----------------------------------------
* Le package 'amsmath', disponible sur CTAN dans
/fonts/ams/amslatex/, offre la commande \boxed.

Exemple : 
$$\boxed{a=b}$$
%%%% fin exemple %%%%

* Il existe également la commande \fbox.

Remarque : Avec les environnements multi-lignes de AMSTeX (comme 
	   multline ou split), il peut être utile de les 
	   encapsuler dans un math ou dans un displaymath.

Exemple :
\begin{equation}
   \fbox{$
   \begin{array}{rcl}
      x + y + z & = & 0 \\
      2x + 2y + 2z & = & 0
   \end{array}
   $}
\end{equation}
%%%% fin exemple %%%%

* Le package 'fancybox' disponible sur CTAN dans
/macros/latex/contrib/other/seminar/inputs/ peut également être
utile.

Exemple :
\linethickness{3pt}
\Ovalbox{
\begin{Beqnarray}
ds^2&\,=\,& \displaystyle{\frac{\epsilon^{\prime 2}}{L^2}
\frac{12N}{(N+1)(N+2)}}
\end{Beqnarray}
}
%%%% fin exemple %%%%

* Une dernière solution consiste à mettre la formule dans un
tableau d'une seule cellule.

# 12.16 # Comment ajuster la longueur d'une flèche par rapport
--------------------------------------------------------------
à un texte ?
------------
Le package 'amsmath',disponible sur CTAN dans
/fonts/ams/amslatex/, permet de générer des flèches dont la
longueur dépend de la longueur du texte qui est placé au dessus
ou en dessous (ou de la chaîne la plus longue lorsqu'il y a à la
fois un texte au dessus et un autre en dessous).

Exemple : 
$\xrightarrow[\text{au dessus}]{\text{en dessous}}$
%%%% fin exemple %%%%

# 12.17 # Comment obtenir des indices ou exposants à gauche ?
-------------------------------------------------------------
* Les commandes \sideset \overset et \underset du
package 'amsmath' permettent de placer du texte à gauche, en
haut ou en bas.

Exemple, mettre dans le préambule :
\newcommand{\transposee}[1]{{\vphantom{#1}}^{\mathit t}{#1}}

puis, dans le corps du document :
 \[
\transposee{
\begin{pmatrix} 
   a & b \\
   c & d \\
\end{pmatrix}
}
\]
%%%% fin exemple %%%%
 
Remarque : on peut également utiliser \sideset qui ne marche
	   que pour les opérateurs :
	   \newcommand{\transposee}[1]{\sideset{^{\mathit{t}}}{}
	   {#1}}

* A défaut, on peut utiliser ${}_{j}H$ ou  ${_jH}$

* Le package 'chemsym' disponible sur CTAN dans
/macros/latex/contrib/other/chemsym/ peut également être utile.
  
# 12.18 # Comment tracer des diagrammes commutatifs ?
-----------------------------------------------------
* Xy-pic est un outil simple et puissant qui permet de réaliser
de tels diagrammes (cf. paragraphe 8.6). 

Exemple :
\documentclass[a4paper,12pt]{article}
\usepackage[all]{xy}
\begin{document}
 \[\xymatrix{
  A \ar[d] \ar[r] \ar@{=}[rd] & B \ar[d] \\
  C \ar[r] & D }
\]
\end{document}
%%%% fin exemple %%%%

* On peut également utiliser le package 'amscd' disponible sur
CTAN dans /macros/latex/packages/amslatex/math/ ou plus
généralement le package 'amsmath' et l'environnement CD mais 
son offre est plus limitée.

Exemple 1 (amscd) :
\[
\begin{CD}
   \mathcal{F} @>\otimes>> T\\
   @VdrVlfV @ViVjV\\
   \mathtt{f} @= t
\end{CD}
\]

\[
\begin{CD}
d @>>> e @>>> f \\
@AAA @. @AAA \\
a @>>> b @>>> c
\end{CD}
\]
%%%% fin exemple %%%%

Exemple 2 (amsmath) :
\[
\begin{array}{ccccc}
d & \longrightarrow & e & \longrightarrow &f \\
\uparrow &&&& \uparrow \\
a & \longrightarrow & b &\longrightarrow& c\\
\end{array}
\]
%%%% fin exemple %%%%

Remarque : dans la dernière version de amscd, la syntaxe
	   @>Exp1>Exp2> utilisée pour les flèches extensibles a 
	   été abandonnée au profit des commandes \xleftarrow et
	   \xrightarrow. 
	   
	   Pour plus de détails consultez :	   
	   + "\amslatex/ Version 1.2\\User's Guide", dans le
	   fichier "amsldoc.tex" 
	   + "Differences between \amslatex/ version 1.1 and
	   \amslatex/ version 1.2", dans le fichier "diff12.tex".

* Il existe le package 'cd' écrit pour LaTeX209 par D.
Hankerson. Ce package étend les capacités des fonction
AMS-TeX. Les longueurs de texte s'ajustent avec la longueur des
arguments.

Exemple (doc package) :
\documentstyle[12pt,cd]{article}
\newcommand{\cdrl}{\cd\rightleftarrows}
\newcommand{\cdlr}{\cd\leftrightarrows}
\newcommand{\cdr}{\cd\rightarrow}
\newcommand{\cdl}{\cd\leftarrow}
\newcommand{\cdu}{\cd\uparrow}
\newcommand{\cdd}{\cd\downarrow}
\newcommand{\cdud}{\cd\updownarrows}
\newcommand{\cddu}{\cd\downuparrows}
\begin{document}
\[\CD
G \cdrl {\gamma}{\delta} H \cdr {}{\Delta} K \\
\cd. \cdud {f}{g} \cd| {h}{k} \\
0 \cdr {}{} G' \cd= {\beta}{} H' \endCD
\]
\end{document}
%%%% fin exemple %%%%

* Le package 'catmac' définit un ensemble de macros pour tracer
des diagrammes commutatifs. Il propose par défaut un ensemble
de formes mais permet également via un certain nombre de
macros prédéfinies de composer ses propres formes.

Exemple :
\begin{center}
   \resetparms
   \square[A`B`C`D;f`g`h`k]
\end{center}
%%%% fin exemple %%%%

ATTENTION : ce package n'est pas compatible avec le package
	    french qui rend le ; actif.

# 12.19 # Comment ajuster la taille de certains opérateurs ?
------------------------------------------------------------
* Pour ajuster la taille de certains opérateurs, il faut
utiliser le package 'exscale' disponible sur CTAN dans
/macros/latex/base/.

* Le package 'amsmath', disponible sur CTAN dans
/fonts/ams/amslatex/, donne la même possibilité.

# 12.20 # Comment mettre en page des algorithmes ?
--------------------------------------------------
* Les packages 'algorithms' et 'algorithmic' disponibles sur
CTAN dans /macros/latex/contrib/supported/algorithms/, ont été
spécifiquement conçus pour mettre en forme des algorithmes.

* Il existe aussi le package 'alg' disponible sur CTAN dans
/macros/latex/contrib/other/alg/.

* Le package 'newalg' est également disponible sur CTAN dans
/macros/latex/contrib/supported/newalg/. Il propose un
environnement algorithm qui par défaut utilise le mode
mathématique et l'environnement array pour les alignements. La
commande \text est également disponible. Le package gère les
instructions : if-then-else, for, while, repeat, switch et
propose un certain nombre de macros telles que call, error,
algkey, return, nil.

Exemple :
\begin{algorithm}{StrictSup}{x, y}
   \begin{IF}{x > y}
      \RETURN x
   \ELSE
      \ERROR{x leq y}
  \end{IF}
\end{algorithm}      
%%%% fin exemple %%%%

# 12.21 # Comment mettre en page des formules longues ?
-------------------------------------------------------
L. Lamport définit certaines conventions dans sa page WEB :
http://www.research.digital.com/SRC/personal/Leslie_Lamport/
latex/latex.html

# 12.22 # Comment créer des unités de mesure ?
----------------------------------------------
Le problème du mode mathématique est qu'il change
automatiquement de fonte et qu'il utilise une gestion
particulière des espaces. Le mieux pour écrire des unités de
mesures du type m/s sans avoir à taper systématiquement des
barbarismes du type \rm\,m/s\mit ou \,\textrm{m}/\textrm{s} est
de définir une commande spéciale dans le préambule du document. 

Exemples : 
\newcommand{\units}[2]{#1\textrm{\thinspace #2}}
cette commande nécessite le package 'amsmath'
utilisation : \units{10}{m/s}

ou plus rapide :
\newcommand{\ms}[1]{\units{#1}{m/s}}
utilisation : \ms{10}
%%%% fin exemple %%%%

# 12.23 # Comment écrire proprement a/b ?
-----------------------------------------
Pour qu'à l'impression le numérateur 'a' soit légèrement décalé
vers le haut et vers la gauche et que le dénominateur 'b' soit
légèrement décalé vers le bas et vers la droite, les deux étant
plus petits que la fonte courante, il existe la commande \sfrac
du package tugboat disponible sur CTAN dans
/macros/latex/contrib/supported/tugboat/.

# 12.24 # Comment créer des notes de bas de page dans une
---------------------------------------------------------
formule mathématique ?
----------------------
* On peut utiliser directement la commande \footnote{} ou les
commandes spécifiques \footnotemark[] et \footnotetext[]{}
si l'on veut fixer soit même les compteurs. \footnotemark permet
de gérer le compteur de notes et \footnotetext permet d'insérer
le texte correspondant en bas de page.

Exemple :
\[
Place_{libre}\footnotemark[1] + 
Place_{occup\acute ee}\footnotemark[2] + 
Place_{d\acute efaillante} = 
Capacit\acute e
\]
\footnotetext[1]{La place libre~\ldots} 
\footnotetext[2]{La place occup\' ee~\ldots}
%%%% fin exemple %%%%

# 12.25 # Comment forcer le style d'un tableau à displaystyle ?
---------------------------------------------------------------
Le style par défaut dans un "array" est textstyle. Pour éviter
d'avoir à écrire \displaystyle dans chaque cellule, on peut
déclarer un tableau entièrement en mode displaystyle via la
macro: 
%%%% debut macro %%%%
\newenvironment{disarray}%
 {\everymath{\displaystyle\everymath{}}\array}%
 {\endarray}
%%%% fin macro %%%%
 
# 12.26 # Comment réduire les espaces gérés par eqnarray ?
----------------------------------------------------------
Il suffit d'inclure la macro suivante dans le préambule de votre
document :

%%%% debut macro %%%%
\makeatletter
\newlength{\earraycolsep}
\setlength{\earraycolsep}{2pt}
\def\eqnarray{\stepcounter{equation}\let\@currentlabel%
\theequation
\global\@eqnswtrue\m@th
\global\@eqcnt\z@\tabskip\@centering\let\\\@eqncr
$$\halign to\displaywidth\bgroup\@eqnsel\hskip\@centering
$\displaystyle\tabskip\z@{##}$&\global\@eqcnt\@ne
\hskip 2\earraycolsep \hfil$\displaystyle{##}$\hfil
&\global\@eqcnt\tw@ \hskip 2\earraycolsep
$\displaystyle\tabskip\z@{##}$\hfil
\tabskip\@centering&\llap{##}\tabskip\z@\cr}
\makeatother
%%%% fin macro %%%%

# 12.27 # Comment réduire la taille des indices ?
-------------------------------------------------
* Il faut utiliser la commande \DeclareMathSizes :
\DeclareMathSizes{10}{10}{6}{5}
\DeclareMathSizes{11}{11}{7}{5}
\DeclareMathSizes{12}{12}{7}{5}
Ces déclarations permettent de réduire la taille des indices des
fontes 10pt, 11pt et 12pt.

Exemple :
\documentclass[12pt]{report}
\usepackage{french}
\pagestyle{empty}
\DeclareMathSizes{12}{12}{7}{5}
\begin{document}
La capacité totale est définie par~:
\[
C_{libre} + C_{occup\acute ee} = C_{totale}
\]
\end{document}
%%%% fin exemple %%%%

* On peut aussi utiliser les commandes scriptstyle ou
scriptscriptstyle.

Exemple :
$\rho_{AB}$
$\rho_{\scriptstyle AB}$
$\rho_{\scriptscriptstyle AB}$
%%%% fin exemple %%%%

* En utilisant les caractères romans, on peut appliquer la
commande \small.

Exemple :
$\rho_{\textrm{\small AB}}$
%%%% fin exemple %%%%

# 12.28 # Comment aligner des indices ?
---------------------------------------
La commande \vphantom définit une boîte invisible dont la
hauteur est celle de son argument.

Exemple :
\[
f_{\vphantom{\widehat{ef}} d} = f_{\widehat{ef}} \mathrm{\ au \
lieu \ de~:} f_d = f_{\widehat{ef}} 
\]
%%%% fin exemple %%%%

# 12.29 # Comment mettre en page des théorèmes ?
------------------------------------------------
* LaTeX offre la commande
\newtheorem{nom}[compteur]{texte}[section]
où nom est une clé pour identifier le théorème, et
texte le titre du théorème qui sera imprimé. compteur permet de
référencer un autre théorème pour obtenir la même numérotation.
section permet de préciser le niveau de numérotation voulu.

Exemple :
dans le préambule :
\newtheorem{th-imp}{Théorème important}[section]
\newtheorem{th-u}{Théorème}[subsection]

dans le texte :

\section{Introduction.}
   
   \begin{th-imp} \label{label-th-AA}
      BLA BLA
   \end{th-imp}
   
   \subsection{Bases.}
      
      \begin{th-u} \label{label-th-aaa}
	 bla bla bla 
      \end{th-u}
      
      \begin{th-u} 
	 bla ble 
      \end{th-u}
      
\section{Conclusion}
   
   Le théorème important~\ref{label-th-AA} est à apprendre par
   c\oe{}ur, le théorème~\ref{label-th-aaa} peut être utile.
%%%% fin exemple %%%%

* Il existe pour cela le package 'thmmarks' disponible à
http://www.informatik.uni-freiburg.de/~may/thmmarks.html.

* Le package 'amsmath', disponible sur CTAN dans
/fonts/ams/amslatex/, définit l'environnement proof. 

* Le package 'newthm' disponible sur CTAN dans
/macros/latex/contrib/other/newthm/ permet de générer une liste
des théorèmes apparaissant dans un document.

* Il existe également le package 'ntheorem' disponible sur CTAN
ou à
http://www.informatik.uni-freiburg.de/~may/Ntheorem/ntheorem.html
Il permet de définir son propre style de théorème.

# 12.30 # Comment changer la taille de la fonte ?
-------------------------------------------------
Voici une solution présentée par T. Bouche et S.A. Zaimi :

Exemple :
\documentclass{report}
\def\mathtitre#1{
\font\tenrm=cmr10   scaled \magstep#1
\font\sevenrm=cmr7  scaled \magstep#1
\font\fiverm=cmr5   scaled \magstep#1
\font\teni=cmmi10   scaled \magstep#1
\font\seveni=cmmi7  scaled \magstep#1 
\font\fivei=cmmi5   scaled \magstep#1
\font\tensy=cmsy10  scaled \magstep#1
\font\sevensy=cmsy7 scaled \magstep#1 
\font\fivesy=cmsy5  scaled \magstep#1 
\font\tenex=cmex10  scaled \magstep#1
\textfont0=\tenrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm
\textfont1=\teni  \scriptfont1=\seveni  \scriptscriptfont1=\fivei
\textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy
\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
}

\begin{document}
	{\mathtitre0 $$A+B=C^{B^A}$$}
	{\mathtitre1 $$A+B=C^{B^A}$$}
	{\mathtitre2 $$A+B=C^{B^A}$$}
	{\mathtitre3 $$A+B=C^{B^A}$$}
	{\mathtitre4 $$A+B=C^{B^A}$$}
	{\mathtitre5 $$A+B=C^{B^A}$$}
\end{document}
%%%% fin exemple %%%%

ATTENTION : il ne faut pas que le bloc en police \mathtitreXX 
	    se trouve à cheval sur deux pages... cela mettrait 
	    le numéro de page (et les en-têtes-pieds de page)
	    dans ladite police...

# 12.31 # A quoi sert la commande \displaystyle ?
-------------------------------------------------
Elle permet de forcer LaTeX à gérer les indices et les exposants
comme si il était en mode mathématique isolé. Cela peut alors
induire une modification locale de l'interligne courant.

Exemple :
Elle permet de forcer \LaTeX à gérer les indices et les
exposants comme si il était en mode mathématique isolé
$\displaystyle{\sum_{i=0}^n x_i}$. Cela peut alors induire une
modification locale de l'interligne courant. Ce texte contient
un exemple probant. Le changement d'interligne est bien visible.
%%%% fin exemple %%%%

# 12.32 # Comment aligner des données sur le point décimal ?
------------------------------------------------------------
* Le package 'dcolumn' disponible sur CTAN dans
/macros/latex/packages/tools/ permet d'aligner les nombres d'un
tableau par rapport à leur point décimal.

* On peut également utiliser un tableau avec une virgule comme
séparateur de colonnes.

Exemple :
\[
\begin{array}{r @{,} l}
   1&2 \\ 
   233&456 \\
   x&y \\
\end{array}
\]
%%%% fin exemple %%%%

# 12.33 # Comment gérer les espaces en mode mathématique ?
----------------------------------------------------------
Voici les différents espaces prédéfinis :
\! réduit l'espace par défaut,
\, donne un petit espace,
\ suivit d'un espace, donne un espace de taille moyenne,
\quad donne un espace moyen,
\qquad donne un grand espace.

Exemple :
\[
\begin{array}{l}
   sin cos \\
   sin \! cos \\
   sin \, cos \\
   sin \  cos \\
   sin \quad cos \\
   sin \qquad cos \\
\end{array}
\]
%%%% fin exemple %%%%

# 12.34 # Comment obtenir des accolades horizontales ?
------------------------------------------------------
\overbrace et \underbrace.

Exemple :
\[
\overbrace{f(x)}^{=0} + \underbrace{g(y)}_{=0} = 0
\]
%%%% fin exemple %%%%

# 12.35 # Comment obtenir des points de suspensions ?
-----------------------------------------------------
En mode math, il existe différents types de points de suspension
suivant leur orientation :
+ \ldots pour des points horizontaux sur la ligne d'écriture
+ \cdots pour des points horizontaux au dessus de la ligne
d'écriture
+ \vdots pour des points verticaux
+ \ddots pour des points en diagonale

Exemple :
\[
\begin{array}{ccc}
   x_{11} & \cdots & x_{1p} \\
   \vdots & \ddots & \vdots \\
   x_{n1} & \cdots & x_{np} 
\end{array}
\]
%%%% fin exemple %%%%

# 12.36 # Comment mettre en page un système d'équations ?
---------------------------------------------------------
* On peut utiliser les commandes \left délimiteur et \right.
classiques devant un tableau.

Exemple :
\[
\left \{
\begin{array}{c @{=} c}
    x & \sin a \cos b \\ 
    y & \sin a \sin b \\
\end{array}
\right.
\]
%%%% fin exemple %%%%

* Pour pouvoir utiliser l'environnement eqnarray, il faut passer
par des \parbox.

Exemple :
\[
\left\{\parbox{10cm}{
\begin{eqnarray} a&=&b\\
c&=&d\end{eqnarray}
}\right.
\]
%%%% fin exemple %%%%

* Le package 'cases' disponible sur CTAN dans
/macros/latex/contrib/other/misc/ gère les systèmes d'équations.

Exemple :
\begin{numcases}{|x|=}
    x, & for $x \geq 0$\\
    -x, & for $x < 0$
\end{numcases}
%%%% fin exemple %%%%

* Voici une adaptation de ce package par J. Laurens :
%%%% debut macro %%%%
%  fichier xtdeqnra.sty             ver 1.0    Decembre 1997
%
%  Copyright (C) 1997 by Jerome LAURENS
%
%  Ces macros peuvent e^tre librement transmises, sans modification aucune
%  tant que cette notice est intacte.
%  Base' sur le paquetage cases.sty de D.Arseneau
%  et la commande \eqnarray de Leslie Lamport et de l'e'quipe LaTeX3.
%
%  On rajoute un parame`tre optionnel a` l'environnement eqnarray qui
%  est un delimiteur gauche
%
%  Exemple : source
%
%  \begin{eqnarray}[\{]
%   x_1 & = & valeur_1 \\
%   x_2 & = & valeur_2 \\
%   x_3 & = & valeur_3
%  \end{eqnarray}
%
%  Re'sultat
%
%               /  x_1 = valeur_1           (1)
%               |
%               <  x_2 = valeur_2           (2)
%               |
%               \  x_3 = valeur_3           (3)
%
%  Pour utiliser ce paquetage,
%  inclure  "\usepackage{xtdeqnra}"  apre`s \documentclass.
%
%  On peut utiliser l'environnement subequations pour avoir (1a), (1b) et (1c)
% - - - - -
%

\ProvidesPackage{xtdeqnra}[1997/12/05 version 1.0 ]

%  - sauvegarde de l'environnement eqnarray
\let\x@eqnarray\eqnarray
\let\endx@eqnarray\endeqnarray
%
%  - environnement de remplacement
\def\eqnarray{\@ifnextchar[%
  {\let\endeqnarray\endy@eqnarray\y@eqnarray}
  {\let\endeqnarray\endx@eqnarray\x@eqnarray}}
%
%  - nouvel environnement avec un de'limiteur a` gauche
\def\y@eqnarray[#1]%
{ \gdef\@leftdelimiter{#1}
  \displaymath
  \setbox\tw@\vbox
    \bgroup
      \stepcounter{equation}%
      \def\@currentlabel{\p@equation\theequation}%
      \global\@eqnswtrue
      \m@th
      \everycr{}%
      \tabskip\@centering
      \let\\\@eqncr
      \halign to\displaywidth
        \bgroup
          \hskip \@ne\arraycolsep
          \hfil$\displaystyle
          \tabskip\z@skip{##}$%
          \@eqnsel
          &\global\@eqcnt\@ne
          \hskip \tw@\arraycolsep
          \hfil${##}$\hfil
          &\global\@eqcnt\tw@
          \hskip\tw@\arraycolsep
          $\displaystyle{##}$\hfil
          \unskip\hfil
          \tabskip\@centering% \unskip removes space if no explanations
      		  &\global\@eqcnt\thr@@
          \hb@xt@\z@\bgroup\hss##\egroup
          \tabskip\z@skip
          \cr
}
\def\endy@eqnarray{%
          \@@eqncr
        \egroup % end \halign, which does not contain brace
      \global\advance\c@equation\m@ne
      \unskip\unpenalty
      \unskip\unpenalty
      \setbox\z@\lastbox % grab last line
      \nointerlineskip
      \copy\z@ % then put it back
      \setbox\z@\hbox{\unhbox\z@}%
      \global\dimen@i\wd\z@
    \egroup% end \vbox (box\tw@, box\z@ is restored to LHS)
  \hbox to\displaywidth{%
    \m@th % assemble the whole equation
    \hskip\@centering
    \hbox to\dimen@i{%
      $\displaystyle%
      \dimen@\ht\tw@
      \advance\dimen@\dp\tw@ % get size of brace
      \setbox\z@\hbox{$\mathord{\left\@leftdelimiter\vcenter
to\dimen@{\vfil}\right.}$}%
      \dimen@\wd\z@
      \kern-\dimen@
      \box\z@%
      \n@space % make brace
      $\hfil}
    \hskip\@centering % finished first part (filled whole line)
    \kern-\displaywidth$%
    \vcenter{\box\tw@}$% overlay the alignment
  }% end the \hbox
  \enddisplaymath
  \global\@ignoretrue
}

\endinput

% fin du fichier xtdeqnra.sty
%%%% fin macro %%%%

* Le package 'delarray' disponible sur CTAN dans
/macros/latex/packages/tools/ peut également être utilisé dans
ce but.

# 12.37 # Comment mettre en page des diagrammes de Feynman ?
------------------------------------------------------------
Le package 'feynmf' disponible sur CTAN dans
/macros/latex/contrib/supported/feynmf/ permet de gérer la mise
en page de diagrammes de Feynman.

# 12.38 # Comment obtenir une fraction ?
----------------------------------------
LaTeX propose la commande \frac{arg1}{arg2} dont l'argument arg1
est le numérateur et arg2 dénominateur.

Exemple :
en formule~:
$$\frac{\alpha}{6 + \sqrt{2}}$$
ou dans le texte $\frac{\alpha}{6 + \sqrt{2}}$.
%%%% fin exemple %%%%

# 12.39 # Comment obtenir une racine ?
--------------------------------------
Il existe la commande \sqrt[n]{arg}, qui représente la racine
nième de arg. [n] est un paramètre optionnel.

Exemple :
$$ \sqrt[3]{\sqrt{\sqrt[\gamma]{x+y}}} $$
%%%% fin exemple %%%%

# 12.40 # Quels sont les délimiteurs disponibles ?
--------------------------------------------------
( ) [ ]  \{ \}
\uparrow \downarrow \updownarrow
\Uparrow \Downarrow \Updownarrow
\lfloor \rfloor \lceil \rceil 
\langle \rangle  
/ \backslash | \|

# 12.41 # Comment appeler les lettres grecques ?
------------------------------------------------
Il suffit de faire précéder leur nom en toutes lettres d'un
backslash :
+ minuscules :
\alpha \beta \gamma \delta \epsilon \varepsilon \zeta \eta
\theta \vartheta \iota \kappa \lambda \mu \nu \xi \pi \varpi
\rho \varrho \sigma \varsigma \tau \upsilon \phi \varphi \chi
\psi \omega

+ majuscules :
\Gamma \Delta \Theta \Lambda \Xi \Pi \Sigma \Upsilon \Phi \Psi
\Omega

# 12.42 # Quels sont les accents mathématique standards ?
---------------------------------------------------------
* Il en existe dix pour des lettres seules :
+ $\hat{a}$
+ $\check{a}$
+ $\breve{a}$
+ $\acute{a}$
+ $\grave{a}$
+ $\tilde{a}$
+ $\bar{a}$
+ $\vec{a}$
+ $\dot{a}$
+ $\ddot{a}$

Remarque : pour placer un accent sur un i ou un j, il faut
	   utiliser les commandes \imath et \jmath qui 
	   permettent de supprimer le point par défaut.
	   
* Il en existe également d'autres pour couvrir des ensembles de
lettres :
+ $\widehat{abc}$
+ $\widetilde{def}$
+ $\overrightarrow{ghi}$
+ $\overline{jkl}$
+ $\underline{mno}$
+ $\overbrace{pqr}$
+ $\underbrace{stu}$

# 12.43 # Comment superposer deux symboles ?
--------------------------------------------
Il existe pour cela la commande \stackrel{dessus}{dessous}

Exemple :
\[
A \stackrel{\theta}{\Rightarrow} B
\]
%%%% fin exemple %%%%

# 12.44 # Comment définir un nouvel opérateur ou symbole ?
----------------------------------------------------------
* Il existe pour cela la commande \DeclareMathOperator du
package 'amsmath', disponible sur CTAN dans /fonts/ams/amslatex/.
Elle s'utilise dans le préambule.

Exemple :
\DeclareMathOperator{\init}{init}

\[
\init f = 0 \mathrm{\ au \ lieu \ de~:} init f = 0
\]
%%%% fin exemple %%%%

* On peut également utiliser \newcommand, toujours dans le
préambule du document.

Exemple :
\newcommand{\affecte}{\mathrel{:=}}

$x \affecte 0$

$y \affecte 1$
%%%% fin exemple %%%%

* On peut utiliser \def.

Exemple :
\makeatletter
\def\log{\mathop{\operator@font log}\nolimits}
\makeatother

$\log 28 = 1.447158$
%%%% fin exemple %%%%

* Pour définir un nouveau symbole de plusieurs caractères, il
faut utiliser \mathit.

# 12.45 # Comment obtenir des lettres grecques en gras ?
--------------------------------------------------------
* On peut utiliser le package 'amsmath', disponible sur CTAN dans
/fonts/ams/amslatex/ :

Exemple :
...
\usepackage{amsmath}
...
\begin{document}
...
$\boldsymbol{\alpha}$
%%%% fin exemple %%%%

* On peut également utiliser le package 'bm' disponible sur CTAN
dans /macros/latex/contrib/supported/bm/.

Exemple :
...
\usepackage{bm}
...
\begin{document}
...
$\bm{\alpha}$
%%%% fin exemple %%%%


================================================================
[13] RÉFÉRENCES CROISÉES
================================================================

# 13.1 # Quelles sont les commandes de base ?
---------------------------------------------
* LaTeX permet de gérer automatiquement des références croisées
grâce aux commandes suivantes :
\label{} pour repérer la référence à rappeler
\ref{} pour faire appel à la référence décrite par la commande
\label  
\pageref{} pour faire référence à la page de la référence
reperée par la commande \label 
\cite{} pour faire référence à un document cité en
bibliographie.

L'utilisation de ces commandes nécessite alors plusieurs (deux
à trois) compilations successives, jusqu'à ce que toutes les
références croisées soient correctes.

ATTENTION : pour les figures et les tables, la commande \label
	    doit se situer juste après un \caption ou en faire 
	    partie pour que les références soient correctes.

ATTENTION : lorsque l'on travaille avec une version inférieure à
	    3.6 du package babel et l'option french, sachant que 
	    cette dernière redéfinit certains caractères de
	    ponctuation tels que :;?! pour gérer automatiquement
	    les espaces, il ne faut pas les utiliser dans des
	    noms de label : \label{section:Introduction} est
	    interdit.

Exemple :
Remplir la table~\ref{table-add}, page~\pageref{table-add}
\begin{table}[htbp]
   \begin{center} 
      \begin{tabular}{c|c} 
	 \hline 
	  Question & Réponse  \\ 
	 \hline 
	 1 + 12 & \\
	 45 + 76 & \\
      \end{tabular} 
      \caption{Additions. \label{table-add}} 
   \end{center} 
\end{table}
%%%% fin exemple %%%%

* Le package 'prettyref' disponible sur CTAN dans
/macros/latex/contrib/supported/prettyref/ permet de définir ses
propres styles de référence.

# 13.2 # Comment obtenir un renvoi à une page ?
-----------------------------------------------
* Il suffit d'utiliser la commande \pageref présentée ci-dessus.

* Le package 'varioref', de F. Mittelbach, disponible sur CTAN
dans /macros/latex/packages/tools/, permet de n'appeler une
référence de page que si l'objet flottant auquel elle se
rattache n'est pas présent sur la page courante. Pour cela, ce
package définit la commande \vpageref qui ne fera apparaître le
numéro de la page référencée que si ce n'est pas la page
courante. Cette commande peut également introduire des
expressions du type "sur la page précédente", "sur cette même
page", etc. Dans ce cas, on précise la langue voulue en option
lors de l'appel du package.

Exemple:
\documentclass{report}
\usepackage{french}
\usepackage[french]{varioref}

\begin{document}
Remplir la table~\ref{table-add}~\vpageref{table-add}
\begin{table}[htbp]
   \begin{center} 
      \begin{tabular}{c|c} 
	 \hline 
	  Question & Réponse  \\ 
	 \hline 
	 1 + 12 & \\
	 45 + 76 & \\
      \end{tabular} 
      \caption{Additions. \label{table-add}} 
   \end{center} 
\end{table}
\end{document}
%%%% fin exemple %%%%

Remarque : Ce package est incompatible avec les styles de page
	   sans numérotation (e.g. empty).

# 13.3 # Comment obtenir des références croisées à partir de
------------------------------------------------------------
plusieurs sources ?
-------------------
Le package 'xr', de D. Carlisle, permet de faire des références
d'un document à l'autre. Il est disponible sur CTAN dans
/macros/latex/packages/tools/. Le document contenant les labels
est appelé dans le document contenant les références via la
commande \externaldocument.  La commande
\externaldocument[KEY]{DOCUMENT} permet même de gérer les
références de même nom.

Exemple :
* fichier essai.tex :
	\documentclass[a4paper,12pt]{book}

	\begin{document}
	   \section{Ma section.\label{ma-sect}}
	\end{document}

* fichier essai-ass.tex :
	\documentclass[11pt]{report}
	\usepackage{xr}
	\externaldocument{essai}
	
	\begin{document}
	Pour plus de détails, voir le document \textit{essai},
	paragraphe~\ref{ma-sect}
	\end{document}
%%%% fin exemple %%%%

# 13.4 # Comment définir des liens hypertexte sous LaTeX ?
----------------------------------------------------------
* Le package 'hyperref' de S. Rahtz disponible sur CTAN dans
/macros/latex/contrib/supported/hyperref/ permet de définir des
liens hypertexte pour PDF. Il définit pour cela des commandes de
type \ref{}.

* Voir également les packages 'hyper' et 'hyperlatex'
disponibles sur CTAN dans
/macros/latex/contrib/supported/hyper/.

* La distribution Y&Y TeX System supporte des liens en TeX
debuggable dans le previewer qui seront automatiquement
convertis en liens PDF pour Adobe. 

# 13.5 # Comment faire référence à ses propres compteurs ?
----------------------------------------------------------
Lorsque l'on définit son propre environnement avec ses popres
compteurs, pour que les commandes \label et \ref puissent les
prendre en compte, il suffit d'utiliser \refstepcounter au
lieu de \stepcounter pour incrémenter le compteur auquel on
fait référence.


================================================================
[14] TABLE DES MATIÈRES
================================================================

# 14.1 # Comment générer une table des matières ?
-------------------------------------------------
* LaTeX propose la commande \tableofcontents à appeler à
l'endroit où l'on veut insérer la table des matières.

# 14.2 # Comment générer plusieurs tables des matières ?
--------------------------------------------------------
* Le package 'french' propose la commande sommaire[n] qui permet
d'inclure une table des matière de niveau de profondeur n.

Remarque : dans ce cas \tableofcontents reste utilisable.

* Le package 'shorttoc' ci-dessous, de J.P. Drucbert, définit la
commande \shorttableofcontents{TITRE}{NIVEAU}.

Remarque : dans ce cas \tableofcontents reste également
	   utilisable.

%%%% debut macro %%%%
%shorttoc.sty
\ProvidesPackage{shorttoc}%
[1995/01/04 v1.0 Short table of contents package (JPFD)]
\def\@startshorttoc#1{\bgroup
  \makeatletter
  \@input{\jobname.#1}%
  \global\@nobreakfalse \egroup}

\def\shorttableofcontents#1#2{\bgroup\c@tocdepth=#2\@restonecolfalse
  \if@twocolumn\@restonecoltrue\onecolumn\fi
  \@ifundefined{chapter}%
  {\section*{{#1}
        \@mkboth{\uppercase{#1}}{\uppercase{#1}}}}%
  {\chapter*{{#1}
        \@mkboth{\uppercase{#1}}{\uppercase{#1}}}}%
  \@startshorttoc{toc}\if@restonecol\twocolumn\fi\egroup}
%%%% fin macro %%%%

* Le package 'minitoc', disponible sur CTAN dans
/macros/latex/contrib/supported/minitoc/, permet de construire
une minitable des matières au début de chaque chapitre sous les
classes 'book' et 'report'. Pour l'utiliser, il faut appeler les
commandes \dominitoc avant la commande \tableofcontents
habituelle. La commande \faketableofcontents permet de ne garder
que les tables des matières locales et remplace alors la
commande \tableofcontents. La commande \minitoc doit être
appelée après chaque commande de début de chapitre \chapter dans
lequel on veut inclure une table locale. A chaque appel de
minitoc correspond un fichier .mtc<n> ou n est le numéro du
chapitre.

Le compteur minitocdepth permet de fixer la profondeur des
tables des matières désirées. 

Exemple : 
\documentclass{report}
\usepackage{minitoc}
\usepackage{french}
\setcounter{minitocdepth}{1} 
\begin{document}

\dominitoc
\tableofcontents

\chapter{Introduction.}
\minitoc

\section{Quelques rappels.}
   Texte.
   
   \subsection{La gravité.}
      
      Texte sur la gravité.
      
   \subsection{Loi de Newton.}
      
      Deux corps s'attirent en raison inverse du carré
      de leur distance et proportionnellement à leur
      masse.
      
\section{Nouveaux théorèmes.}
   
   Encore des résultats.
   
\section{Approfondissement.}
   
   Toujours plus loin.

pour ne faire apparaître que les titres de sections.
\end{document}
%%%% fin exemple %%%%

Le bon fonctionnement des numérotations peut nécessiter jusqu'à
trois compilations enchaînées.

ATTENTION : minitoc sait faire:
+ les tables des matières (liste des figures/tables) par partie,
+ par chapitre (classe book et report) et,
+ par section (classe article).

Par contre, il ne fait pas les tables des matières par section
(et en dessous) pour les classes book et report, ni les tables
des matières par sous-section (et en dessous) pour la classe
article. 

# 14.3 # Comment ajouter une entrée dans la table des matières ?
----------------------------------------------------------------
Pour ajouter un titre de paragraphe qui n'apparaît pas par
défaut dans la table des matières, il faut utiliser la commande
\addcontentsline{1}{2}{3} où :
1 est l'extension du fichier contenant la table des matières
généralement 1 vaut toc, 
2 est un niveau définit dans la table des matières, ce peut être
chapter, section, ... et,
3 est le texte que l'on veut voir apparaître dans la table.

Exemple : 
\bibliography{sdf}
\addcontentsline{toc}{chapter}{Bibliographie.}
%%%% fin exemple %%%%

# 14.4 # Comment changer le titre de la table des matières ?
------------------------------------------------------------
On peut utiliser la commande :
\renewcommand{\contentsname}{Contenu du document.}

Remarque : suivant les packages utilisés, il faut placer cette
	   définition avant ou après le \begin{document}.

# 14.5 # Comment changer la profondeur de la table des matières ?
----------------------------------------------------------------- 
Les sections sont numérotées si leur profondeur est inférieure à
secnumdepth. 

Elles apparaîssent dans la table des matières si leur profondeur
est inférieure à tocdepth.

Il suffit de changer les valeurs de ces deux compteurs. Il peut
alors être nécessaire d'enchaîner deux compilations latex.

Exemple :
\documentclass[a4paper]{article}
\usepackage{french}
\pagestyle{empty}
% Profondeur de \subsubsection = 3
\setcounter{tocdepth}{3}     % Dans la table des matieres
\setcounter{secnumdepth}{3}  % Avec un numero.

\begin{document}
\tableofcontents
\vspace{.5cm}
\hrule

\part{Aaa.}
\section{aaa.}
   \subsection{bbb.}
      \subsubsection{ccc.}
\end{document}
%%%% fin exemple %%%%

# 14.6 # Comment gérer des chapitres de préface, d'introduction,
----------------------------------------------------------------
et de conclusion non numérotés ?
--------------------------------
* La classe book définit les commandes \frontmatter, \mainmatter
et \backmatter qui permettent de faire cela.

Exemple :
\documentclass[a4paper,12pt,openany]{book}
\usepackage{french}
 
\def\TEXTE{Bla bla bla...}
 
\begin{document}

\frontmatter

%\begin{abstract}  Bla, bla... \end{abstract}
 
\chapter{Préface} \TEXTE
\chapter{Introduction} \TEXTE
 
\mainmatter
 
\chapter{Début} \TEXTE
\chapter{Suite} \TEXTE
\chapter{Fin}  \TEXTE
 
\appendix
\chapter{Résultats élémentaires}
\chapter{Résultats compliqués}
 
\backmatter
 
\chapter{Conclusion}  \TEXTE
 
\tableofcontents
\end{document}
%%%% fin exemple %%%%

* L'autre solution consiste à définir ses propres commandes
\introduction, \preface, etc, à partir des définitions
de \chapter sans prendre en compte la numérotation.

* On peut également utiliser les commandes étoilées et gérer
soit même la table des matières et éventuellement les en-têtes
et bas de page.

Exemple :
\chapter*{Intro}
\addcontentsline{toc}{chapter}{Intro...}
%%%% fin exemple %%%%

# 14.7 # Comment enlever le numérotation des pages de tdm ?
-----------------------------------------------------------
Il suffit d'inclure les lignes suivantes dans le préambule du
document :
%%%% debut macro %%%%
\makeatletter
\def\addcontentsline@toc#1#2#3{%
   \addtocontents{#1}{\protect\thispagestyle{empty}}%
   \addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}}}
\def\addcontentsline#1#2#3{%
  \expandafter\@ifundefined{addcontentsline@#1}%
  {\addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}}}
  {\csname addcontentsline@#1\endcsname{#1}{#2}{#3}}}
\makeatother
%%%% fin macro %%%%


================================================================
[15] BIBLIOGRAPHIE SOUS LATEX
================================================================

# 15.1 # Comment construire une bibliographie ?
-----------------------------------------------
* Il existe deux techniques pour construire une bibliographie :
+ la première consiste à l'intégrer dans le corps même du
document (fichier.tex), 
+ la seconde consiste à la définir dans un fichier particulier
(fichier.bib) puis à l'appeler dans le corps du document.

* Technique on-line :
Il suffit d'appeler l'environnement thebibliography et de
définir des bibitem.

Exemple :
\begin{thebibliography}{2}
   \bibitem[label]{cle} Auteur, TITRE, editeur, annee
   \bibitem[LAM94]{lam1} L. LAMPORT, {\it LATEX : A Document
   preparation system, Addison-Wesley, 1994}
\end{thebibliography}
%%%% fin exemple %%%%

[label] définit le label qui apparaîtra dans la bibliographie
et dans le texte après appel de la commande \cite{cle}.

* BibTeX permet de construire simplement une bibliographie. La
technique consiste alors à écrire un ou plusieurs fichiers.bib
qui seront appelés dans le document source par la commande
\bibliography{fichier1, fichier2,...}. BibTeX est disponible
sur CTAN dans /biblio/bibtex.

Le style de la bibliographie doit être défini par
\bibliographystyle{xxx} avec xxx valant généralement plain ou
alpha, mais il existe aussi d'autres styles. La commande
\bibliographystyle doit être appelée après \begin{document}.

Le contenu d'un fichier.bib est un ensemble de déclarations du
style :
@ARTICLE{cle, 
author = "liste-noms-auteur", 
title = "titre-article", 
journal = "nom-journal", 
year = "annee-parution",
}  
% OPTIONAL FIELDS 
% volume = "", 
% number = "", 
% pages =  "",  
% month =  "", 
% note =  "",

La syntaxe des différentes déclarations possible peut se
trouver dans toute bonne documentation LaTeX ou dans les menus
des éditeurs tels que emacs ou Alpha.

Losqu'on utilise BibTeX, il faut alors enchaîner plusieurs
compilations pour que toutes les références soient exactes.
Généralement, il faut exécuter une passe LaTeX, une
passe Bibtex et encore deux passes LaTeX.

* Pour pouvoir inclure dans la bibliographie des références à
des documents qui ne sont pas cités explicitement par une
commande \cite, il suffit d'inclure la commande
\nocite{la-ref-non-citee} avant la commande
\bibliography{fichier_biblio}. Pour faire apparaître toutes les
références non citées sans toutes les énumérer, on peut utiliser
\nocite{*}.

* BIBDB, disponible sur CTAN, est un gestionnaire de
bibliographie BIBTEX, facile à manipuler qui tourne sous DOS.

* Bibview est un programme tournant sous X11 et permettant la
saisie et la consultation de fichiers bibtex.

# 15.2 # Comment gérer plusieurs bibliographies ?
-------------------------------------------------
* Le package 'chapterbib' permet d'inclure une bibliographie
par chapitre. Il est disponible sur CTAN dans
/macros/latex/contrib/supported/cite/. Les bibliographies
réparties peuvent alors apparaître comme section de ce chapitre
grâce à la commande : \usepackage[sectionbib]{chapterbib}.

* Le package 'bibunits', de A. Fernandez, permet de partager une
bibliographie en plusieurs unités chacune attenante à une
section, ou à un chapitre d'un article ou d'un livre donné.

Exemple :

////////////// fichier rapport.tex /////////////
\documentclass[a4paper]{report}

\usepackage{bibunits}
\usepackage{french}

\begin{document}
\chapter{Algorithmes.}

Présentation d'algorithmes.

\nocite*
\bibliographystyle{alpha}
\bibliography{alg}

\chapter{Géométrie.}

Texte sur la géométrie.

\nocite*
\bibliographystyle{plain}
\bibliography{geom}
\end{document}


////////////// fichier alg.bib /////////////
@UNPUBLISHED{algg, 
author = MPK, 
title = Algorithmes et rythmes, 
note = RAS,  
}

////////////// fichier geom.bib /////////////
@INBOOK{geomm, 
author = Me again, 
title = Principes de géométrie, 
chapter = Les droites, 
publisher = Home publishing, 
year = 1997, 
} 
%%%% fin exemple %%%%

* Le package 'bibtopics', de P. Basso, permet de contruire une
bibliographie générale comportant des rubriques diverses
(livres, articles, thèses, ...) ou des sujets divers (physique,
mathématiques, ...). Il est disponible par ftp à 
ftp.univ-rennes1.fr dans /pub/GUTenberg/contrib/.

Remarque : pour les versions récentes de LaTeX, il  peut être
	   nécessaire d'inclure les lignes :
		\makeatletter
		\let\if@openbib\iffalse
		\makeatother
	   dans le préambule du document.

* Voici un petit fichier 'multibib.sty' de V. Henn, créé en
recopiant les définitions latex des commandes relatives à la
gestion des bibliographies, et en les rendant paramétrables.

Les commandes qui ont été définies sont :
\newbibliographyGENE{biblio} pour déclarer une bibliographie
	biblio. 
\citeGENE{biblio}{clé} pour appeler une référence.
\bibliographystyleGENE{biblio-x}{alpha} pour définir le style de
	biblio.
\bibliographyGENE{biblio}{fichier-biblio1} pour faire
	référence au fichier fichier-biblio1.bib qui contient 
	les références.

%%%% debut macro %%%%
%% A sauver dans  multibib.sty 
%%%%%% biblio generique %%%%%%%%

\newcommand\newbibliographyGENE[1]{%
\expandafter\expandafter\expandafter\newwrite\@nameuse{@#1aux}
\immediate\expandafter\expandafter\openout\@nameuse{@#1aux}=#1.aux
%\expandafter\expandafter\expandafter\show\@nameuse{@#1aux}
}

\def\citeGENE#1{\@ifnextchar [{\@tempswatrue\@citexGENE{#1}}%
{\@tempswafalse\@citexGENE{#1}[]}}
 
\def\@citexGENE#1[#2]#3{\if@filesw\immediate\expandafter%
\expandafter\expandafter\write\@nameuse{@#1aux}{\string%
\citation{#3}}\fi
 \let\@citea\@empty
 \@cite{\@for\@citeb:=#3\do
  {\@citea\def\@citea{,\penalty\@m\ }%
   \def\@tempa##1##2\@nil{\edef\@citeb{\if##1\space##2%
   \else##1##2\fi}}%
   \expandafter\@tempa\@citeb\@nil
   \@ifundefined{b@\@citeb}{{\reset@font\bf ?}\@warning
    {Citation `\@citeb' on page \thepage \space undefined}}%
   \hbox{\csname b@\@citeb\endcsname}}}{#2}}
 
\def\bibliographyGENE#1#2{\if@filesw\immediate\expandafter%
\expandafter\expandafter\write\@nameuse{@#1aux}{\string%
\bibdata{#2}}\fi
  \@input{#1.bbl}}
 
\def\bibliographystyleGENE#1#2{\if@filesw\immediate\expandafter%
\expandafter\expandafter\write\@nameuse{@#1aux}
    {\string\bibstyle{#2}}\fi}
 
\def\nociteGENE#1#2{\@bsphack
  \if@filesw\immediate\write\@nameuse{@#1aux}{\string%
  \citation{#2}}\fi
  \@esphack}
%%%% fin macro %%%%

Exemple d'utilisation :
Les fichiers gene.bib et speci.bib contiennent respectivement
une référence bibliographie de clé cle-gene et cle-speci.

\documentclass{report}
\usepackage{multibib}
\usepackage{french}

\begin{document}

\newbibliographyGENE{Toto}  
\newbibliographyGENE{Titi}  

\chapter{Introduction.}
 blabla bla \citeGENE{Toto}{cle-gene} et
\citeGENE{Titi}{cle-speci} rebla rebla rebla

\bibliographystyleGENE{Toto}{plain}
\bibliographyGENE{Toto}{gene}

\bibliographystyleGENE{Titi}{alpha}
\bibliographyGENE{Titi}{speci}

\end{document}

il faut alors compiler de la manière suivante :
latex fichier-source
bibtex Toto
bibtex Titi
latex fichier-source
latex fichier-source
%%%% fin exemple %%%%

# 15.3 # Comment changer de langue dans une bibliographie ?
-----------------------------------------------------------
* Il existe des versions francisées des styles bibliographiques
(fplain, falpha, fralpha, frealfullname...) qui ne sont pas
parfaits mais qui peuvent être modifiés facilement. Voir la
distribution GUTenberg.

Exemple :
\documentstyle{falpha}
%%%% fin exemple %%%%

* Sachant que les items d'une bibliographie sont des
paragraphes, ils peuvent commencer par la spécification d'une
langue. Si on utilise le package 'french', on dispose des
commandes \french et \english et si l'on utilise le package
'babel', il faut utiliser la commande \selectlanguage{} (cf.
paragraphe 11.1).

* Voir également le package 'frbib' pour les bibliographies
françaises.

* Le package 'mlbib' disponible sur CTAN dans
/macros/latex/contrib/supported/mlbib/ permet de gérer des
bibliographies multilingues.

# 15.4 # Comment renvoyer une référence en note de bas de page ?
----------------------------------------------------------------
* Pour remplacer une référence insérée dans le texte par la
commande \cite, par un appel à une note de bas de page
contenant une référence succinte à un document (la référence
détaillée apparaîssant toujours dans la bibliographie), il faut
redéfinir la commande \cite dans le préambule du document par : 
%%%% debut macro %%%%
\makeatletter
\def\@cite#1#2{%
  \footnote{#1\if@tempswa, #2\fi}}
\makeatother
%%%% fin macro %%%%

Les informations reportées dans la note de bas de page
dépendent du style de bibliographie choisi.

* Le package 'overcite', de D. Arseneau, est disponible sur CTAN
dans macros/latex/contrib/supported/cite/. Il permet de faire
référence à des documents par un exposant. 

Le problème qui se pose alors est de distinguer les références,
des notes de bas de page. Si le document contient moins de 10
notes de bas de page, on peut utiliser la commande
\renewcommand{\thefootnote}{\fnsymbol{footnote}}. Sinon pour
disposer de 10 notes de bas de page par page, il existe le
package 'footnote' de R. Fairbairns disponible sur CTAN dans
/macros/latex/contrib/supported/footnote.

Exemple :
\usepackage[perpage,symbol]{footnote}
%%%% fin exemple %%%%

* Le package 'camel' disponible sur CTAN dans
/macros/latex/contrib/supported/camel/, propose différents
styles de bibliographies renvoyant à des notes de bas de page.

* E. Domenjoud a également écrit le package 'footbib',
disponible sur CTAN, qui permet de faire cela.
Eric.Domenjoud@loria.fr.

# 15.5 # Comment faire référence à un document ?
------------------------------------------------
Il suffit d'utiliser la commande \cite avec en paramètre la clé
du document (cf. paragraphe 15.1). La commande \cite peut
prendre un texte en option.

Exemple :
Voir~: \cite[chapitre 1]{cle}.
%%%% fin exemple %%%%

# 15.6 # Comment grouper des références multiples ?
---------------------------------------------------
* Le package 'cite' de D. Arseneau est disponible sur CTAN
dans /macros/latex/contrib/supported/cite/. Il permet de trier
et de grouper les références multiples. Par exemple, il permet
automatiquement de générer [1-6] au lieu de lister [1, 2, 3, 4,
5, 6].

* Il existe également les packages 'mcite' et 'rangecite' (pour
LaTeX2.09) disponibles sur CTAN  respectivement dans
/macros/latex/contrib/supported/mcite/ et dans
/macros/latex209/contrib/misc/.

# 15.7 # Comment changer le titre de la bibliographie ?
-------------------------------------------------------
Suivante la classe de document que l'on utilise (article,
book, report, ...), il faut redéfinir :
\renewcommand{\bibname}{R\'ef\'erences}
ou 
\renewcommand{\refname}{R\'ef\'erences}
dans le préambule.

Remarque : avec certains packages comme french, il faut placer
	   cette nouvelle définition de commande après le 
	   \begin{document}.

# 15.8 # Comment changer le style de la bibliographie ?
-------------------------------------------------------
* Il existe un certain nombre de style par défaut (alpha,
plain, unsrt, abbrrv) que l'on peut appeler par la commande
\bibliographystyle{xxx} placée après la commande
\begin{document}.

Remarque : Certains styles comme plain, acm ou apalike trient
	   alphabetiquement les références d'une bibliographie 
	   suivant le premier auteur de chaque référence.
	   D'autres comme alpha utilisent la première lettre du
	   nom de chacun des auteurs multiples.

* Il existe également le package 'custom-bib' disponible sur
CTAN dans /macros/latex/supported/custom-bib/ qui permet de
définir ses propres styles sans avoir à se plonger dans le
language BibTeX. Le programme est interactif.

* De même le package 'natbib' est disponible par ftp à
ftp.loria.fr dans /macros/latex/contrib/supported/natbib. Il
permet entre autres de classer la bibliographie de plusieurs
façons différentes, notament par ordre alphabétique pour les
auteurs, par l'année de parution, etc.

* Pour remplacer la numérotation [1] par 1., on peut utiliser la
commande :
\makeatletter
\renewcommand{\@biblabel}[1]{\quad #1.}
\makeatother

* Pour supprimer toute numérotation il faut utiliser de la même
manière :
\makeatletter
\renewcommand{\@biblabel}[1]{}
\makeatother

* Le package 'easybib' disponible sur CTAN dans
/macros/latex/contrib/supported/easy/ permet par une syntaxe
simple de définir ses propres styles bibliographiques.

# 15.9 # Comment construire une bibliographie à partir de
----------------------------------------------------------
plusieurs fichiers .bib ?
-------------------------
Pour cela il existe le package 'biblist' de J. chrod, disponible
sur CTAN dans /macros/latex209/contrib/biblist/.

Exemple :
\documentclass[12pt]{article}
\usepackage{biblist}
\begin{document}
\nocite{*}
\bibliographystyle{plain}
\bibliography{bibfile1,bibfile2,...}
\end{document}
%%%% fin exemple %%%%

# 15.10 # Comment utiliser la commande \cite dans un \caption ?
---------------------------------------------------------------
On peut mettre la commande \cite dans un \caption à condition de
la protéger : \protect\cite. 

# 15.11 # Comment référencer une thèse française ou un mémoire ?
----------------------------------------------------------------
Il faut définir de nouvelles références. Pour cela, copier le
fichier .bst dans un autre fichier .bst avec un nom différent
et rechercher PhD thesis puis remplacer par Thèse de doctorat.

Exemple :
FUNCTION {thesedoc}
{ output.bibitem
format.authors "author" output.check
new.block
format.btitle "title" output.check
new.block
"Th\`ese de Doctorat" format.thesis.type output.nonnull
school "school" output.check
address output
format.date "year" output.check
new.block
note output
fin.entry
}
%%%% fin exemple %%%%

Idem pour les mémoires de DEA :

FUNCTION {memdea}
{ output.bibitem
  format.authors "author" output.check
  new.block
  format.title "title" output.check
  new.block
  "M\'emoire de D.E.A." format.thesis.type output.nonnull
  school "school" output.check
  address output
  format.date "year" output.check
  new.block
  note output
  fin.entry
}

# 15.12 # Comment supprimer la virgule supplémentaire dans une
--------------------------------------------------------------
liste d'auteurs ?
-----------------
Par défaut, dans une liste d'auteurs le "et" qui introduit le
dernier auteur est précédé d'une virgule. Pour la supprimer, il
faut modifier la fonction format.names dans un nouveau fichier
.bst de la manière suivante :

%%%% debut macro %%%%
FUNCTION {format.names}
{ 's :=3D
  #1 'nameptr :=3D
  s num.names$ 'numnames :=3D
  numnames 'namesleft :=3D
    { namesleft #0 > }
    { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=3D
      nameptr #1 >
	{ namesleft #1 >
	    { ", " * t * }
	    { namesleft #2 >
		{ "," * }
		'skip$
	      if$
	      t "others" =3D
		{ " et~al." * }
		{ " and " * t * }
	      if$
	    }
	  if$
	}
	't
      if$
      nameptr #1 + 'nameptr :=3D
      namesleft #1 - 'namesleft :=3D
    }
  while$
}
%%%% fin macro %%%%

# 15.13 # Comment configurer la commande \cite ?
------------------------------------------------
* Le package 'cite' disponible sur CTAN dans
/macros/latex/contrib/supported/cite/ offre certaines
possibilités.

Exemple :
\usepackage{cite}
\renewcommand\citepunct{;\penalty999\ }
%%%% fin exemple %%%%

* Pour afficher une clé à la place du label [??] dans le cas ou
LaTeX/BibTex ne trouve pas la clé spécifiée dans la
bibliographie, on peut utiliser la macro suivante :

%%%% debut macro %%%%
\def\@citex[#1]#2{%
 \let\@citea\@empty
 \@cite{\@for\@citeb:=#2\do
  {\@citea\def\@citea{,\penalty\@m\ }%
   \edef\@citeb{\expandafter\@firstofone\@citeb}%
   \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}
   \fi
%%%% Ligne originale %%%%
%     \@ifundefined{b@\@citeb}{\mbox{\reset@font\bfseries ?}%
%%%% Ligne modifiée %%%%
   \@ifundefined{b@\@citeb}{\mbox{\reset@font\bfseries \@citeb}%
     \G@refundefinedtrue
     \@latex@warning
       {Citation `\@citeb' on page \thepage \space undefined}}%
     {\hbox{\csname b@\@citeb\endcsname}}}}{#1}}
%%%% fin macro %%%%

# 15.14 # Comment construire une liste d'auteurs ?
--------------------------------------------------
Pour séparer les éléments d'une liste d'auteurs il faut
utiliser "and". 

Exemple :
Dewitt, D.J. and Naughton, J.
%%%% fin exemple %%%%

# 15.15 # Comment spécifier un tri dans une bibliographie ?
-----------------------------------------------------------
Il existe l'outil BibTool disponible sur CTAN dans
/biblio/bibtex/utils/bibtool/ ou sur
http://www.uni-koblenz.de/~gerd/ftp/BibTool. BibTool est un
outil de manipulation de bases de données BibTeX et il permet en
particulier de spécifier différents ordres de tri pour une
bibliographie.

Exemples :
* bibtool -s file.bib -o the_new_bibtex_file.bib
pour trier suivant les auteurs et les titres
* bibtool -s -- 'sort.format={%d(year)}' file.bib -o
the_new_bibtex_file.bib 
pour trier par ordre croissant des années de parution
* bibtool -s -- 'sort.format={%s($type)%N(author)}' gn-publ.bib
pour trier par classe de document et par auteur.

L'appel du fichier ainsi trié se fait alors par exemple par :
\documentclass{article}
\begin{document}
\nocite{*}
\bibliographystyle{unsrt}
\bibliography{the_new_bibtex_file}
\end{document}
%%%% fin exemple %%%%

# 15.16 # Comment référencer les pages contenant des citations ?
----------------------------------------------------------------
Il faut utiliser le package 'backref' disponible sur CTAN.

# 15.17 # Où trouver des styles de bibliographie ?
--------------------------------------------------
* Le package 'biblist' de J. Schrod offre différents styles de
bibliographie prédéfinis. Il est disponible sur CTAN dans
/macros/latex209/contrib/biblist/.

* Le package 'apacite' est disponible sur CTAN dan
/biblio/bibtex/contrib/.

* Le package 'bbtbase' disponible sur CTAN propose des styles
bibliographiques de base.

* De nombreux autres styles sont disponibles sur CTAN.

# 15.18 # Comment faire des références croisées ?
-------------------------------------------------
Il faut utiliser le champ crossref de bibtex.

Exemple :
@InProceedings{contejean96rta,
  author =      "Evelyne Contejean and Claude March\'e",
  title =       "{CiME: Completion Modulo $E$}",
  crossref =    "rta96",
  pages =       "416--419",
  year =        1996,
  note =        "System Description",
  ftp =         "ftp://ftp.lri.fr/LRI/art/march/",
  abstract =    "http://www.lri.fr/~marche/cime-rta96.html"
}

@Proceedings{rta96,
  title         = "7th International Conference on ...",
  booktitle     = "7th International Conference on ...",
  editor        = "Harald Ganzinger",
  publisher     = SV,
  year          = 1996,
  month         = jul,
  address       = "New Brunswick, NJ, USA",
  series        = LNCS,
  volume        = 1103,
}
%%%% fin exemple %%%%

ATTENTION : l'ordre de déclaration @InProceedings/@Proceedings
	    dans le fichier .bib est important.

# 15.19 # Comment citer une URL ?
---------------------------------
* Le style harvard propose un champ URL. Il est disponible à :
http://www.arch.su.edu.au/~peterw/latex/harvard/ ou sur CTAN
dans /macros/latex/contrib/supported/harvard/.

* Le style bibliographique 'utphys', de J. Distler, disponible à
http://xxx.lanl.gov/hypertex/bibstyles ajoute le champ eprint à
toutes les entrées bibtex classiques.

* On peut également utiliser la macro @MISC et mettre la
référence URL dans le champ note.

* M. Moreau propose la solution suivante :
J'ai recupere le fichier falpha.bst auquel j'ai ajoute :

FUNCTION {format.url}
{ url empty$ 
    {"empty"}
    { url emphasize }
  if$
}

FUNCTION {onTheNet}
{ output.bibitem
  format.authors output 
  format.title "title" output.check
  new.block
  institution "institution" output.check
  format.date output
  new.block
  format.url "url" output.check
  fin.entry
}

Autrement dit, si on peut avoir des documents de type onTheNet avec
pour entree obligatoire : title, institution, url et entree
optionnelle : author, year, month, note. L'URL est indique en
italique.

# 15.20 # Comment définir des initiales à deux lettres ?
--------------------------------------------------------
En français, les prénoms commencant par Ch, Ph, Th... ont pour
initiales leurs deux premières lettres (Ex : Philippe --> Ph.).
Pour forcer BibTeX à considérer ces groupes de lettres, il faut
utiliser : {\relax Ph}ilippe. BibTeX prend alors tout le groupe
{..} pour une lettre. La commande \relax est considérée comme
une commande d'accent qui est supprimée lors du tri
alphabetique. Elle est nécessaire car lorsqu'un groupe apparaît
dans un nom, BibTeX s'attend à trouver une commande d'accent
juste après l'accolade ouvrante.

# 15.21 # Comment conserver les majuscules dans les titres ?
------------------------------------------------------------
Il suffit de mettre les majuscules entres accolades.

# 15.22 # Comment changer l'espace entre les item ?
---------------------------------------------------
Il faut copier la définition de l'environnement thebibliography
qui se trouve dans le fichier de style de la classe utilisée
(par exemple article.cls pour un article) dans un fichier de
style (qui sera appelé via une commande \usepackage) ou dans le
préambule de votre document (entre \makeatletter, \makeatother).
Il faut ensuite remplacer \newenvironment par \renewenvironment
et modifier la définition en ajoutant \setlength\itemsep{0pt}
après \list.

# 15.23 # Comment réaliser des fiches de lecture ?
--------------------------------------------------
* S. O. Genaud (genaud@galaad.u-strasbg.fr) a écrit un petit
logiciel de gestion des références bibliographiques au format
bibtex, sous la forme d'une interface graphique. La version
actuelle n'est peut être pas exempte de tout bug. Elle tourne
sur Linux, SunOS et Solaris avec la librairie xview.

Pour récupérer l'exécutable ou avoir plus d'informations :
http://icps.u-strasbg.fr/~genaud/FRM

Le programme bibfrm permet de lire un fichier bibtex ou de créer
un fichier de références bibliographiques au format bibtex et
d'associer à chaque référence un résumé. L'interface graphique
permet de savoir immédiatement quels sont les champs optionnels
et obligatoires pour un type de document donné. Le logiciel
permet de parcourir les différentes références du fichier, de
faire une recherche sur une chaine, de trier les références par
nom d'auteur, année ou type de document. Pour chaque référence,
un résumé peut être saisi dans l'éditeur de texte incorporé dans
l'interface. Ce résumé peut être envoyé par mail à une liste de
diffusion prédéfinie.

* Le package 'abstbook' disponible sur CTAN dans
/macros/latex/contrib/other/misc/ permet de mettre en page des
catalogues de résumés.

# 15.24 # Comment utiliser la commande \cite dans un item ?
-----------------------------------------------------------
Pour utiliser la commande \cite dans l'item d'un environnement
description, il suffit de l'encadrer dans des accolades.

Exemple :
\item[{\cite[\S3.1]{Author1}}]
%%%% fin exemple %%%%

# 15.25 # Comment générer l'expression et al automatiquement ?
--------------------------------------------------------------
Voici une fonction "format.names" (tirée de plain.bst) où V. Henn
a rajouté quelques lignes pour mettre un et al pour les auteurs
de numéro supérieurs à 4. N'importe quel style biblio utilise une
fonction avec une syntaxe similaire, il n'y a qu'à insérer les
nouvelles lignes dans la fonction format.names (juste avant la
fin du while) du fichier biblio qui vous plaît et le tour est
joué...

%%%% debut macro %%%%
FUNCTION {format.names}
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
  { namesleft #0 > }
  { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
    nameptr #1 >
    { namesleft #1 >
      { ", " * t * }
      { numnames #2 >
          { "," * }
          'skip$
        if$
        t "others" =
          { " et~al." * }
          { " and " * t * }
        if$
      }
      if$
    }   % fin du "si nameptr > 1"
    't  % "si nameptr = 1"
  if$
  nameptr #1 + 'nameptr :=
  namesleft #1 - 'namesleft :=

% ------------------------------
% si à ce stade on se retrouve avec des noms à placer et que
% le pointeur nameptr est égal à 4 alors il faut
% 1. ajouter un "et al."
% 2. ne pas prendre en compte les auteurs suivants : nameleft:=0
    nameptr #4 =  namesleft #0 >  and
    {  " \emph{et~al.}" *
       #0 'namesleft :=
    }
    'skip$
    if$
% fin des ajouts
% ------------------------------

  }
  while$ % tant qu'il reste des nom à placer
}
%%%% fin macro %%%%





--
mpk.                                                   _  _
                                                      / |/ |
                                               _  _   () () \
                                              /o\/o\\\\\||\\/
                                              \vvvv/////|\\\\
Bad Wally.                                     wwww**** \\\\\\
---------------------------------------------------------------
 Marie-Paule KLUTH    Marie-Paule.Kluth@aar.alcatel-alsthom.fr
...............................................................
 Alcatel Alsthom Recherche       Tel : +33 (0)1 69 63 12 68
 Route de Nozay                  Fax : +33 (0)1 69 63 18 12
 91460 Marcoussis                			FRANCE
---------------------------------------------------------------


User Contributions:

Comment about this article, ask questions, or add new information about this topic:




Part1 - Part2 - Part3

[ Usenet FAQs | Web FAQs | Documents | RFC Index ]

Send corrections/additions to the FAQ Maintainer:
kluth@aar.alcatel-alsthom.fr (Marie-Paule Kluth)





Last Update March 27 2014 @ 02:11 PM