Path: tempo.univ-lyon1.fr!univ-lyon1.fr!howland.erols.net!cpk-news-hub1.bbnplanet.com!news.gtei.net!opentransit.net!proxad.net!teaser.fr!fdn.fr!edgard.fdn.fr!not-for-mail Date: 08 Jun 2001 13:31:18 +0200 Newsgroups: fr.comp.text.tex,fr.usenet.reponses Subject: [FAQ] fr.comp.text.tex - parties 12 a 15 Message-ID: X-Posted-By: poste.sh version 1.1 From: bayartb@edgard.fdn.fr (Nono le robot) Supersedes: Expires: 08 Jul 2001 13:31:17 +0200 Followup-To: poster Organization: French Data Network Approved: bayartb@edgard.fdn.fr Lines: 2894 Xref: tempo.univ-lyon1.fr fr.comp.text.tex:23524 fr.usenet.reponses:20390 Archive-name: fr/faq-latex-francaise/part4 Author: Marie-Paule Kluth Posting-Frequency: mensuel (monthly) Version: 2.27 ================================================================ Cette FAQ, rédigée initialement par MP Kluth est maintenant tenue à jour autant que possible par B. Bayart et plusieurs volontaires (voir question [30]). ================================================================ ================================================================ [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 ftp://ftp.fdn.org/pub/CTAN/fonts/ams/amslatex/, et 'amssymb' sont incontournables. En LaTeX2.09, on peut utiliser 'amstex', disponible sur ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN//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 sur ftp://e-math.ams.org/pub/tex/amslatex/. Il faut également récupérer les fontes associées dans ftp://e-math.ams.org/pub/tex/amsfonts/, ftp://e-math.ams.org/pub/tex/amsltx11/ et ftp://e-math.ams.org/pub/tex/amstex/. Sur CTAN, les répertoires correspondants sont ftp://ftp.fdn.org/pub/CTAN/macros/latex/packages/amslatex/, ftp://ftp.fdn.org/pub/CTAN/fonts/amsfonts/, ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/amslatex/ et ftp://ftp.fdn.org/pub/CTAN/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 sur ftp://e-math.ams.org/pub/tex/amsfonts/ ou sur ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/ ou sur ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/fonts/stmaryrd/, et 'yhmath' également disponible sur ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/fonts/ams/amslatex/ et par ftp sur ftp://e-math.ams.org/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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/easy/ permet facilement d'écrire des matrices par bloc. * Le package 'easymat' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/easy/ facilite également l'écriture de matrices. # 12.15 # Comment encadrer des formules ? ----------------------------------------- * Le package 'amsmath', disponible sur ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/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 ftp://ftp.fdn.org/pub/CTAN/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 LaTeX2.09 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 ftp://ftp.fdn.org/pub/CTAN/macros/latex/base/. * Le package 'amsmath', disponible sur ftp://ftp.fdn.org/pub/CTAN/fonts/ams/amslatex/, donne la même possibilité. # 12.20 # Comment mettre en page des algorithmes ? -------------------------------------------------- * Les packages 'algorithms' et 'algorithmic' disponibles sur ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/alg/. * Le package 'newalg' est également disponible sur ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 'newthm' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/newthm/ permet de générer une liste des théorèmes apparaissant dans un document. * Les trois packages suivants permettent de définir son propre style. ** Le package 'amsmath', disponible sur ftp://ftp.fdn.org/pub/CTAN//fonts/ams/amslatex/, définit l'environnement proof en insérant un carré. Des exemples de théorèmes se trouvent dans le fichier thmtest.tex ** Le package 'theorem', disponible sur CTAN. Voir le fichier theorem.dvi ** Il existe également le package 'ntheorem' disponible sur CTAN ou sur http://www.informatik.uni-freiburg.de/~may/Ntheorem/ntheorem.html Il peut générer une liste des théoremes de la même manière que 'listoffigures', est compatible avec amsmath, permet d'ajouter des symboles à la fin d'un théoreme 'carré, q.e.d.), permet la référence à d'autres théoremes. Voir le fichier ntheorem.dvi ** Voici un tableau récapitulatif : +------------------------------------+--------+---------+----------+ |Package | amsthm | theorem | ntheorem | +------------------------------------+--------+---------+----------+ |Retour à la ligne après le titre | x | x | x | +------------------------------------+--------+---------+----------+ |Pas de numérotation d'un théoreme | x | | x | +------------------------------------+--------+---------+----------+ |Position du numéro du théoreme | | x | x | +------------------------------------+--------+---------+----------+ |Style de la numérotation | | | x | +------------------------------------+--------+---------+----------+ |Ponctuation après le titre (:,.,etc)| x | | x | +------------------------------------+--------+---------+----------+ |Fonte du titre ou du corps | x | x | x | +------------------------------------+--------+---------+----------+ |Indentation du titre | x | | | +------------------------------------+--------+---------+----------+ |Espace vertical autour du théorème | x | x | x | +------------------------------------+--------+---------+----------+ # 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 ftp://ftp.fdn.org/pub/CTAN/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 %%%% * On peut utiliser le package 'mathenv', permettant de numéroter le système ou chaque équation du système, le compteur pouvant alors être personnalisé. Exemples : % numérotation du système \begin{System} 2x + y = 6 \\ 3x + y = 7 \end{System} %numérotation de chaque équation du système \begin{EqSystem} 2x + y = 6 \\ 3x + y = 7 \end{EqSystem} %%%% fin exemple %%%% * On peut utiliser le package 'amsmath', permettant de placer des alternatives conditionnelles. Exemple : \begin{equation*} |x|= \begin{cases} -x & \text{si $x$ est impair} \\ x & \text{si $x$ est pair ou nul} \end{cases} \end{equation*} %%%% fin exemple %%%% * Le package 'cases' disponible sur ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/fonts/ams/amslatex/ : Exemple : ... \usepackage{amsmath} ... \begin{document} ... $\boldsymbol{\alpha}$ %%%% fin exemple %%%% * On peut également utiliser le package 'bm' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/bm/. Exemple : ... \usepackage{bm} ... \begin{document} ... $\bm{\alpha}$ %%%% fin exemple %%%% # 12.46 # Comment tracer un tableau de variations ? --------------------------------------------------- * Avec l'environnement array en mode mathématiques (cf. question 12.11). Exemple: $ \begin{array}{|c|ccccr|} \hline x & -\infty & & 0 & & +\infty \\ \hline f'(x) & 5 & + & 0 & - & -10 \\ \hline & & & 10 & & \\ % ligne des valeurs "max" f(x) & &\nearrow & &\searrow & \\ % flèches & -\infty & & & & -10 \\ % ligne des valeurs "min" \hline \end{array} $ %%%% fin exemple %%%% * On peut faire de plus jolies flèches (redimensonnables) avec les commandes graphiques. Pour cela, il faut choisir une unité de longueur avant par: \unitlength=1cm et remplacer par exemple \nearrow par (flèches de 2cm de large et de haut) Exemple: \begin{minipage}{2cm} \begin{picture}(2,2) \put(0,0){\vector(1,1){2}} \end{picture} \end{minipage} %%%% 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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 où 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éfini 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 apparaissent 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 ftp://ftp.fdn.org/pub/CTAN/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 possibles 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 ftp://ftp.fdn.org/pub/CTAN/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 sur ftp://ftp.gutenberg.eu.org/pub/gut/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 ftp://ftp.fdn.org/pub/CTAN/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 apparaissant 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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/footnote/. Exemple : \usepackage[perpage,symbol]{footnote} %%%% fin exemple %%%% * Le package 'camel' disponible sur ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/mcite/ et dans ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/misc/. # 15.7 # Comment changer le titre de la bibliographie ? ------------------------------------------------------- Suivant 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 alphabétiquement 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 ftp://ftp.fdn.org/pub/CTAN/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 sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/natbib. Il permet entre autres de classer la bibliographie de plusieurs façons différentes, notamment 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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 où 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 ftp://ftp.fdn.org/pub/CTAN/biblio/bibtex/utils/bibtool/ ou sur http://www.aber.ac.uk/~dbt93/Downloads/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 ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/biblist/. * Le package 'apacite' est disponible sur ftp://ftp.fdn.org/pub/CTAN/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/cime-rta96.ps.gz", 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 ftp://ftp.fdn.org/pub/CTAN/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 recupéré le fichier falpha.bst auquel j'ai ajouté : 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 entrée obligatoire : title, institution, url et entrée optionnelle : author, year, month, note. L'URL est indiquée 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 alphabétique. 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 chaîne, 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 ftp://ftp.fdn.org/pub/CTAN/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 %%%% -- Benjamin Bayart bayartb@edgard.fdn.fr