Suite à de nombreuses demandes, les accents ont été ajoutés. Le programme
`recode' de GNU est capable d'en générer une version sans les accents
(recode latin1:flat faq_latex). Ceux qui ne possèdent pas un
tel programme peuvent me demander une version sans accent par e-mail.
Pour toutes remarques, commentaires ou ajouts, contactez le mainteneur
par e-mail : bayartb@edgard.fdn.fr
Si vous désirez, distribuer ce document par FTP ou sur le WEB, ou
placer un pointeur vers ce dernier, merci de m'en informer par e-mail
et de me communiquer l'adresse correspondante.
Contents
1 Présentation
1.1 Quelle est l'histoire de (La) TEX ?
1.2 Quels sont les principes de base de TEX ?
1.3 Quels sont les principes de base de LATEX ?
1.4 Qu'est ce que le préambule du fichier source ?
1.5 Comment faire ses premiers pas ?
1.6 Comment sont gérées les options de package ?
1.7 Quelle est la structure d'une page LATEX ?
1.8 Quelles sont les commandes de compilation LATEX ?
1.9 Quels sont les fichiers utilisés par LATEX ?
1.10 A quoi correspondent les messages Overfull ?
2 Documentation
2.1 Que puis-je lire sur TEX ?
2.2 Que puis-je lire sur LATEX2.09 ?
2.3 Que puis-je lire sur ?
2.4 Que puis-je lire sur AMS- LATEX ?
2.5 Que puis-je lire sur la typographie ?
2.6 Où trouver une bibliographie complète ?
2.7 Que puis-je lire sur les fontes ?
3 Sites Web
3.1 Où trouver des infos sur le WEB ?
3.2 Où trouver cette FAQ ?
3.3 Existe t'il des listes de discussion francophones ?
3.4 Où trouver d'autres FAQs LATEX ?
4 Sources TEX et LATEX
4.1 Où trouver les sources pour Unix ?
4.2 Où trouver les sources pour VMS ?
4.3 Où trouver les sources pour DOS, OS/2, Windows3.x/95/NT ?
4.4 Où trouver les sources pour MacOS ?
4.5 Où trouver d'autres sources ?
4.5.1 Atari
4.5.2 Amiga
4.5.3 Tandy 6000
4.5.4 TOPS-20
5 Éditer LATEX
5.1 Alpha
5.2 Cicero
5.3 Eddi4 TEX
5.4 (X-)Emacs
5.5 Funtek
5.6 GNU emacs
5.7 JED
5.8 LYX
5.9 MicroEmacs
5.10 NEdit
5.11 Scientific Word
5.12 STEAD
5.13 TEX nicCenter
5.14 TEX Shell
5.15 ViM
5.16 WINEDT95
5.17 wintex95
5.18 Xcoral
5.19 X-Window Shell pour TEX
5.20 xtem
5.21 Autres
6 Gestion de la mise en page
6.1 Comment modifier l'interligne d'un document ?
6.2 Comment gérer un document recto-verso ?
6.3 Comment modifier le style des titres ?
6.4 Comment obtenir un document multicolonnes ?
6.5 Comment composer une brochure ?
6.6 Comment définir un format de document ?
6.7 Comment redéfinir les marges d'un document ?
6.8 Comment changer l'orientation d'un document ?
6.9 Comment justifier verticalement un paragraphe ?
6.10 Comment modifier la commande \ caption ?
6.11 Comment modifier un changement de page ?
6.12 Comment obtenir des colonnes parallèles ?
6.13 Comment définir l'espace de début de paragraphe ?
6.14 Comment supprimer la date sur une page de titre ?
6.15 Comment mettre en valeur la première lettre d'un chapitre ?
6.16 Comment préserver les tabulations en mode verbatim ?
6.17 Comment modifier les entêtes de chapitre ?
6.18 Comment définir des tabulations ?
6.19 Comment obtenir des lettres accentuées dans tabbing ?
6.20 Comment encadrer du texte ?
6.21 Comment gérer des URL WWW ?
6.22 Comment mettre en page des exercices dont les solutions sont reportées dans un autre paragraphe ?
6.23 Comment positionner un objet dans une page ?
6.24 Comment lier le placement des flottants aux sections ?
6.25 Comment griser le fond (background) d'un paragraphe ?
6.26 Comment modifier l'espace inter-colonnes ?
6.27 Comment modifier les environnements de liste ?
6.28 Comment souligner plusieurs lignes ?
6.29 Comment réaliser des onglets ?
6.30 Comment réaliser des QCM ?
6.31 Comment modifier l'orientation des flottants ?
6.32 Comment faire référence plusieurs fois à la même note de bas de page ?
6.33 Comment éviter les orphelins en début ou fin de page ?
6.34 Comment définir de nouveaux flottants ?
6.35 Comment utiliser la commande \ caption hors d'un environnement flottant ?
6.36 Comment encadrer un objet flottant ?
6.37 Comment changer l'orientation d'un caption ?
6.38 Comment mettre en page un programme ?
6.39 Comment inclure le source d'un programme ?
6.40 Comment obtenir un espace insécable ?
6.41 Comment insérer une page blanche ?
6.42 Comment supprimer l'indentation des paragraphes ?
6.43 Comment modifier l'espacement entre caractères ?
6.44 Comment supprimer certaines coupures de mots ?
6.45 Comment mettre en forme des équations chimiques ?
6.46 Comment mettre en page un calendrier ?
6.47 Comment forcer un caption sur plusieurs lignes ?
6.48 Comment générer des barres de modification dans un document ?
6.49 Comment encadrer du texte verbatim ?
6.50 Comment écrire du texte en forme de losange ou autre ?
6.51 Comment isoler les flottants par un trait horizontal ?
6.52 Comment insérer un espace vertical dans une page ?
6.53 Comment insérer un espace horizontal dans un texte ?
6.54 Comment définir un style de paragraphe ?
6.55 À quoi sert la commande \ stretch ?
6.56 Comment justifier un paragraphe à gauche ou à droite ?
6.57 Comment mettre en page des citations ?
6.58 Comment insérer un texte sans que LATEX le mette en forme ?
6.59 Comment visualiser des espaces ?
6.60 Comment insérer du code LATEX dans un document LATEX ?
6.61 Comment écrire du texte en couleurs ?
6.62 Comment construire un arbre ?
6.63 Comment mettre en page un poème ?
6.64 Comment aligner des paragraphes ?
6.65 Comment construire une liste d'éléments ?
6.66 Comment faire une note dans une marge ?
6.67 Comment faire une page de garde ?
6.68 Comment utiliser \ thanks dans chaque titre de chapitre ?
6.69 Comment mettre un résumé et un abstract dans un document ?
6.70 Comment définir de nouvelles couleurs ?
6.71 Comment placer des figures face à face en recto-verso ?
6.72 Quelles sont les différences entre a4paper et letterpaper ?
6.73 Comment couper une cha îne de caractères ?
6.74 Comment modifier l'espace entre une figure et sa légende ?
7 Gestion des tableaux
7.1 Comment faire un tableau ?
7.2 Comment gérer les tableaux de plus d'une page ?
7.3 Comment modifier l'orientation d'un tableau ?
7.4 Comment nommer un tableau ?
7.5 Comment modifier l'épaisseur des lignes d'un tableau ?
7.6 Comment griser des cellules d'un tableau ?
7.7 Comment changer la fonte d'une colonne ?
7.8 Comment créer des notes de bas de page dans un tableau ?
7.9 Comment écrire un texte sur plusieurs colonnes ?
7.10 Comment passer certaines cellules en reverse vidéo ?
7.11 Comment fixer la largeur d'une colonne ?
7.12 Comment écrire un texte sur plusieurs lignes ?
7.13 Comment diviser une cellule par une diagonale ?
7.14 Comment définir une colonne en mode mathématique dans un tableau ?
7.15 Comment modifier le nombre de tableaux par page ?
7.16 Comment mettre deux tableaux côte à côte ?
7.17 Comment définir un séparateur de colonne ?
7.18 Comment obtenir des lignes partielles dans un tableau ?
7.19 Comment éviter que du texte de grande taille n'atteigne le cadre des cellules ?
7.20 Comment fixer la largeur d'un tableau ?
7.21 Comment tracer des traits discontinus ?
7.22 Comment fixer la taille et justifier une colonne ?
7.23 Comment faire une liste de tableaux ?
8 Gestion des figures
8.1 Comment inclure une figure ?
8.2 Comment nommer une figure ?
8.3 Comment placer des figures côte à côte ?
8.4 Comment modifier le nombre de figures par page ?
8.5 Comment superposer du texte sur des figures ?
8.6 Comment réaliser des captures d'écran ?
8.7 Comment tracer une courbe ?
8.8 Comment est géré le positionnement des figures ?
8.9 Comment placer une légende à côté d'une figure ?
8.10 Comment insérer des figures dans multicol ?
8.11 Comment faire appara ître toutes les figures en fin de document ?
8.12 Comment insérer des images Mathematica ?
8.13 Comment modifier la taille d'une bounding box ?
8.14 Comment obtenir une figure avec un titre non numéroté ?
8.15 Comment redéfinir le style de caption ?
8.16 Comment numéroter les figures en fonction des sections ?
8.17 Comment fondre une image dans du texte ?
8.18 Comment réaliser des diagrammes en bâtons ?
8.19 Comment faire un organigramme ?
8.20 Comment centrer une figure très large ?
8.21 Comment passer de ps à eps ?
8.22 Comment changer l'orientation d'une figure ?
8.23 Comment gérer des sous-figures sur plusieurs pages ?
8.24 Comment générer une liste des figures d'un document ?
8.25 Comment faire une figure sous LATEX ?
8.26 Comment mettre un commentaire à côté d'une figure ?
9 Inclusion de fichiers
9.1 Comment inclure des fichiers en mode verbatim ?
9.2 Comment gérer un document par parties ?
9.3 Comment isoler une partie d'un fichier ps ou dvi ?
9.4 Comment inclure un fichier PICT ?
9.5 Comment spécifier un chemin pour les fichiers à inclure ?
10 Hauts et bas de pages
10.1 Comment définir les hauts et bas de page ?
10.2 Comment obtenir une note de bas de page ?
10.3 Comment mettre les notes de bas de page en fin de document ?
10.4 Comment réduire les rappels de titres dans un haut ou bas de page ?
10.5 Comment référencer une note de bas de page ?
10.6 Comment supprimer la numérotation des pages ?
10.7 Comment numéroter les pages par rapport à la dernière ?
10.8 Comment supprimer le trait de séparation des notes de bas de page ?
10.9 Comment modifier la numérotation des pages ?
10.10 Comment supprimer les entêtes et bas de page de pages vierges ?
10.11 Comment gérer des en-têtes avec des environnements verbatim multi-pages ?
10.12 Comment utiliser \ footnote dans un titre ?
10.13 Comment placer les notes de bas de page les unes à côté des autres ?
10.14 Comment réinitialiser le compteur de note de bas de page à chaque page ?
10.15 Comment modifier le style des notes de bas de page ?
10.16 Comment utiliser le mode verbatim dans une note de bas de page ?
10.17 Comment éviter qu'une note de bas de page s'étale sur plusieurs pages ?
11 LATEX, le français et les autres langues
11.1 Comment franciser un document LATEX ?
11.2 Comment corriger les coupures de mots accentués ?
11.3 Comment utiliser les lettres accentuées ?
11.4 Comment composer du texte en grec moderne ou classique ?
11.5 Comment composer du texte en hébreu moderne ou classique ?
11.6 Comment composer du texte en arabe ?
11.7 Comment définir les césures de groupes de mots conjugués avec un trait d'union ?
12 Mathématiques
12.1 Comment passer en mode mathématique ?
12.2 Qu'est que AMS- LATEX ?
12.3 Comment écrire les symboles d'ensembles ?
12.4 Comment numéroter les équations ?
12.5 Comment aligner des équations ?
12.6 Comment générer des vecteurs ?
12.7 Comment écrire du texte en mode mathématique ?
12.8 Comment ajuster la taille de délimiteurs ?
12.9 Comment changer de fonte en mode mathématique ?
12.10 Comment obtenir le L de la transformée de Laplace ?
12.11 Comment réaliser un tableau en mode mathématique ?
12.12 Comment obtenir d'autres symboles mathématiques ?
12.13 Comment définir une fonction ?
12.14 Comment définir une matrice ?
12.15 Comment encadrer des formules ?
12.16 Comment ajuster la longueur d'une flèche par rapport à un texte ?
12.17 Comment obtenir des indices ou exposants à gauche ?
12.18 Comment tracer des diagrammes commutatifs ?
12.19 Comment ajuster la taille de certains opérateurs ?
12.20 Comment mettre en page des algorithmes ?
12.21 Comment mettre en page des formules longues ?
12.22 Comment créer des unités de mesure ?
12.23 Comment écrire proprement a/b ?
12.24 Comment créer des notes de bas de page dans une formule mathématique ?
12.25 Comment forcer le style d'un tableau à displaystyle ?
12.26 Comment réduire les espaces gérés par eqnarray ?
12.27 Comment réduire la taille des indices ?
12.28 Comment aligner des indices ?
12.29 Comment mettre en page des théorèmes ?
12.30 Comment changer la taille de la fonte ?
12.31 A quoi sert la commande \ displaystyle ?
12.32 Comment aligner des données sur le point décimal ?
12.33 Comment gérer les espaces en mode mathématique ?
12.34 Comment ecrire un interieur proprement ?
12.35 Comment obtenir des accolades horizontales ?
12.36 Comment obtenir des points de suspensions ?
12.37 Comment mettre en page un système d'équations ?
12.38 Comment mettre en page des diagrammes de Feynman ?
12.39 Comment obtenir une fraction ?
12.40 Comment obtenir une racine ?
12.41 Quels sont les délimiteurs disponibles ?
12.42 Comment appeler les lettres grecques ?
12.43 Quels sont les accents mathématique standards ?
12.44 Comment superposer deux symboles ?
12.45 Comment définir un nouvel opérateur ou symbole ?
12.46 Comment obtenir des lettres grecques en gras ?
12.47 Comment tracer un tableau de variations ?
13 Références Croisées
13.1 Quelles sont les commandes de base ?
13.2 Comment obtenir un renvoi à une page ?
13.3 Comment obtenir des références croisées à partir de plusieurs sources ?
13.4 Comment définir des liens hypertexte sous LATEX ?
13.5 Comment faire référence à ses propres compteurs ?
13.6 Comment faire référence au début d'un flottant et pas au titre?
14 Table des matières
14.1 Comment générer une table des matières ?
14.2 Comment générer plusieurs tables des matières ?
14.3 Comment ajouter une entrée dans la table des matières ?
14.4 Comment changer le titre de la table des matières ?
14.5 Comment changer la profondeur de la table des matières ?
14.6 Comment gérer des chapitres de préface, d'introduction, et de conclusion non numérotés ?
14.7 Comment enlever le numérotation des pages de tdm ?
15 Bibliographie sous LATEX
15.1 Comment construire une bibliographie ?
15.2 Comment gérer plusieurs bibliographies ?
15.3 Comment changer de langue dans une bibliographie ?
15.4 Comment renvoyer une référence en note de bas de page ?
15.5 Comment faire référence à un document ?
15.6 Comment grouper des références multiples ?
15.7 Comment changer le titre de la bibliographie ?
15.8 Comment changer le style de la bibliographie ?
15.9 Comment construire une bibliographie à partir de plusieurs fichiers .bib ?
15.10 Comment utiliser la commande \ cite dans un \ caption ?
15.11 Comment référencer une thèse française ou un mémoire ?
15.12 Comment supprimer la virgule supplémentaire dans une liste d'auteurs ?
15.13 Comment configurer la commande \ cite ?
15.14 Comment construire une liste d'auteurs ?
15.15 Comment spécifier un tri dans une bibliographie ?
15.16 Comment référencer les pages contenant des citations ?
15.17 Où trouver des styles de bibliographie ?
15.18 Comment faire des références croisées ?
15.19 Comment citer une URL ?
15.20 Comment définir des initiales à deux lettres ?
15.21 Comment conserver les majuscules dans les titres ?
15.22 Comment changer l'espace entre les item ?
15.23 Comment réaliser des fiches de lecture ?
15.24 Comment utiliser la commande \ cite dans un item ?
15.25 Comment générer l'expression et al automatiquement ?
16 Index
16.1 Quelles sont les commandes de base ?
16.2 Comment construire un index hiérarchique ?
16.3 Quels sont les générateurs d'index ?
16.4 Comment changer le style de certains mots indexés ?
16.5 Comment changer le style des pages de référence ?
16.6 Comment rappeler certains mots dans un haut de page ?
16.7 Comment générer plusieurs index ?
16.8 Qu'est ce que IdX TEX ?
16.9 Qu'est ce que xindy ?
17 Glossaire
17.1 Quelles sont les commandes de base ?
17.2 Quels sont les générateurs de glossaire ?
18 Styles prédéfinis
18.1 Où trouver un style de thèse ?
18.2 Comment faire son CV en LATEX ?
18.3 Où trouver un format de publication ?
18.4 Où trouver un style de manuel de référence ?
18.5 Où trouver un style de poster ?
18.6 Comment mettre en forme une lettre interne ?
18.7 Comment créer son propre style ?
19 Création de transparents
19.1 Quels sont les packages et styles existants ?
19.2 Comment définir un contour pour des transparents ?
19.3 Comment inclure des commentaires dans les transparents ?
19.4 Comment modifier l'interligne sous seminar ?
19.5 Comment définir des en-têtes et pieds de pages ?
19.6 Comment modifier la taille du cadre d'un transparent ?
19.7 Comment empêcher les figures de flotter ?
19.8 Comment gérer la couleur avec seminar ?
19.9 Comment imprimer des transparents en miroir ?
19.10 Comment inclure une image de fond ?
19.11 Comment imprimer plusieurs transparents par page ?
20 Lettres, mailing et faxs
20.1 Comment structurer une lettre ?
20.2 Comment préparer un mailing ?
20.3 Comment faire des références dans une lettre ?
20.4 Comment mettre en page un fax ?
20.5 Comment positionner une adresse pour une enveloppe à fenêtre ?
20.6 Comment suppprimer la date sur une lettre ?
20.7 Comment inclure une figure dans une lettre ?
21 Symboles et logos
21.1 Où trouver des symboles électroniques ?
21.2 Comment dessiner des circuits électroniques ?
21.3 Quelles sont les polices de symboles sous LATEX ?
21.4 Comment obtenir les symboles mâle et femelle ?
21.5 Comment obtenir le symbole degré ?
21.6 Où trouver des symboles astronomiques ?
21.7 Où trouver une police de symboles phonétiques ?
21.8 Où trouver des opérateurs de logique floue ?
21.9 Comment obtenir le symbole de paragraphe ?
21.10 Comment obtenir le caractère 'registered' ?
21.11 Où trouver le symbole trade-mark ?
21.12 Comment obtenir un underscore ?
21.13 Où trouver le symbole radioactif ?
21.14 Comment obtenir le logo LATEX ?
21.15 Comment obtenir le logo ?
21.16 Où trouver des chiffres entourés ?
21.17 Comment obtenir le symbole numéro ?
21.18 Comment obtenir les symboles pourcent et pourmille ?
21.19 Comment obtenir un e dans l'o ?
21.20 Quels sont les symboles réservés dans LATEX ?
21.21 Comment obtenir des lettres cursives ?
21.22 Comment obtenir le logo AMS-(La) TEX ?
21.23 Quels sont les symboles par défaut de LATEX ?
21.24 Quels sont les différents tirets ?
21.25 Comment obtenir le symbole arobasse ?
21.26 Comment obtenir un backslash ?
21.27 Comment faire un carré plain de fin de démonstration ?
22 Musique
22.1 Comment écrire de la musique sous LATEX ?
22.2 Comment convertir du midifile en Music TEX ?
22.3 Existe-t'il une liste de discussion de musique ?
22.4 Comment éditer un livre de chants ?
22.5 Comment mettre en page un programme de concert ?
23 Conversion de fichiers
23.1 Comment générer un fichier .ps à partir d'un .dvi ?
23.2 Qu'est ce que le ``Literate Programming'' ?
23.3 Comment convertir du LATEX en word ?
23.4 Comment convertir du word en LATEX ?
23.5 Comment convertir du scribe en LATEX ?
23.6 Comment convertir du WordPerfect en LATEX ?
23.7 Comment convertir du LATEX en RTF ?
23.8 Comment convertir du RTF en (La) TEX ?
23.9 Comment convertir du Excel en LATEX ?
23.10 Comment convertir du HTML en LATEX ?
23.11 Comment convertir du LATEX en HTML ?
23.12 Comment convertir un fichier dvi en ascii ?
23.13 Comment convertir du WEB en LATEX ?
23.14 Comment convertir du TEX en Framemaker ?
23.15 Comment enlever les balises LATEX d'un document ?
23.16 Comment convertir du SGML en (La) TEX ?
23.17 Comment convertir du WinWord en LATEX ?
23.18 Comment convertir un fichier 8 bits en fichier 7 bits ?
23.19 Comment convertir un fichier ChiWriter en TEX ?
23.20 Où trouver une FAQ de convertisseurs (La) TEX /Traitement de texte ?
23.21 Comment convertir une image en police metafont ?
23.22 Comment convertir un fichier postscript en ascii ?
23.23 Comment convertir un fichier pdf en ascii ?
23.24 Comment convertir du LATEX en PDF ?
23.25 Comment définir son propre format de sortie ?
24 Préviewers et viewers
24.1 Où trouver un previewer ?
24.2 Comment visualiser des fichiers non postscript sous xdvi ?
25 Logiciels de dessins
25.1 Où trouver un logiciel de dessin ?
25.2 Comment inclure des formules Latex dans Xfig ?
25.3 Comment gérer différents formats de figures ?
26 Correcteur
26.1 Où trouver un correcteur orthographique ?
26.2 Où trouver un vérificateur de syntaxe LATEX ?
27 Assocations
27.1 Qu'est ce que l'association GUTenberg ?
27.2 Qu'est ce que l'association TUG ?
27.3 Qu'est ce que l'association As TEX ?
28 Fontes
28.1 Que signifient les sigles T1, mf, fd etc. ?
28.2 Quels sont les attributs d'une fonte ?
28.3 Comment utiliser une fonte ?
28.4 Comment changer la forme d'une fonte ?
28.5 Comment changer la taille d'une fonte ?
28.6 Comment modifier la fonte des numéros de paragraphe ?
28.7 Comment modifier la fonte du mode verbatim ?
28.8 Comment réaliser des changements de fontes relatifs ?
28.9 Comment mettre en évidence une portion de texte ?
28.10 Où trouver des fontes ?
28.11 Comment suivre le chargement des fontes ?
28.12 Pourquoi Make TEX PK est lancé alors que la fonte existe ?
28.13 Comment utiliser \ textsc dans un titre en conservant le gras ?
28.14 Comment utiliser des fontes TrueType?
29 Divers
29.1 A quoi sert la commande \ par ?
29.2 Comment commenter une partie d'un source LATEX ?
29.3 Comment utiliser LATEX sur des petites machines ?
29.4 Comment visualiser des paramètres ?
29.5 Comment visualiser des compteurs ?
29.6 A quoi servent \ makeatletter et \ makeatother ?
29.7 Comment numéroter les lignes d'un document ?
29.8 A quoi sert la commande \ special ?
29.9 Comment réaliser des calculs avec les variables LATEX ?
29.10 Où trouver une fonte 9pt ?
29.11 Comment automatiser les compilations LATEX ?
29.12 Comment obtenir des cadres gris ?
29.13 Comment obtenir certaines abréviations ?
29.14 Comment gérer les espaces après une macro ?
29.15 Où trouver les notices d'utilisation des packages ?
29.16 Comment obtenir des listes d'objets flottants ?
29.17 Comment conna ître les versions des fichiers utilisés lors d'une compilation ?
29.18 Pourquoi certaines commandes sont elles indépendantes ?
29.19 Comment installer un package ?
29.20 Comment générer des codes barres ?
29.21 Comment gérer des abbréviations ?
29.22 Comment imprimer un fichier postscript sur une imprimante non postscript ?
29.23 Comment surcharger une commande déjà existante ?
29.24 Comment reporter l'exécution d'une commande à la fin d'une page ?
29.25 Comment définir des scripts interactifs ?
29.26 Comment identifier une version provisoire ?
29.27 Comment obtenir des caractères barrés ?
29.28 A quoi sert la commande \ ensuremath ?
29.29 A quoi servent les commandes \ (re)newcommand ?
29.30 Où trouver des hirondelles ?
29.31 Comment tracer des lignes ?
29.32 Comment imprimer le caractère ?
29.33 Comment visualiser tous les caractères d'une fonte ?
29.34 A quoi sert % dans les macros ?
29.35 Comment inclure l'heure dans un document ?
29.36 Comment compter le nombre de mots d'un fichier ?
29.37 Comment rendre inactif un caractère ?
29.38 Comment utiliser le mode verbatim dans une commande ?
29.39 Comment redéfinir la commande \ year ?
29.40 Qu'est ce que la magnification ?
29.41 Comment sont gérés les postscripts dans LATEX ?
29.42 Pourquoi LATEX n'accepte-t'il pas tous les formats d'image ?
29.43 A quoi sert la commande \ (re)newenvironment ?
29.44 Comment récupérer le nom du fichier compilé ?
29.45 Comment gérer des conditions de traitement dans un style ?
29.46 A quoi servent les commandes \ setlength et \ addtolength ?
29.47 Quelles sont les unités de mesure de TEX ?
29.48 A quoi sert la commande \ mbox ?
29.49 Comment obtenir des points de suspension ?
29.50 Comment désactiver une ligature ?
29.51 Comment gérer les versions d'un document ?
29.52 Comment changer certains titres ?
29.53 Comment insérer un code source dans un document ?
29.54 Comment tracer une ligne horizontale ?
29.55 Comment générer un espace invisible de taille donnée ?
29.56 Qu'est ce qu'une correction italique ?
29.57 Quels sont les accents accessibles sous LATEX ?
29.58 Comment écrire dans un fichier pendant une compilation ?
29.59 Comment gérer des compteurs ?
29.60 Quels sont les différents styles de compteurs ?
29.61 Comment programmer un traitement itératif ?
29.62 A quoi servent les commandes savebox ?
29.63 Comment résoudre certaines incompatibilités de packages ?
29.64 Qu'est ce que Lollipop ?
29.65 J'ai un problème avec babel !
29.66 Qu'est ce que cette FAQ ?
30 Remerciement et Contributions
Le logiciel TEX est un formateur de texte et non un
traitement de texte. De plus il n'est pas WYSIWYG, ce qui peut rebuter
plus d'un utilisateur venant des traitements de texte inclus dans
les suites bureautique. Il est surtout adapté à la rédaction de document
scientifique car sa gestion des mathématiques n'a aucun égal.
1.1 Quelle est l'histoire de (La)TEX ?
Le logiciel TEX (1978) est le formateur de texte de D. E. Knuth.
A l'origine, Knuth a développé TEX (en WEB cf. paragraphe )
notamment pour réaliser de beaux documents et écrire des formules
mathématiques.
LATEX, écrit par L. Lamport (1982), est un jeu de macros au-dessus
de TEX, plus facile à utiliser que ce dernier. Il propose notamment
différents styles de document auxquels correspondent des classes de
document et une grande diversité de macros qui répondent à divers
besoins des auteurs. LATEX a été conçu pour rédiger des articles,
des rapports, des thèses ou des livres ou pour préparer des transparents.
On peut insérer dans le texte, des dessins, des tableaux, des formules
mathématiques et des images sans avoir à se soucier (ou presque) de
leur mise en page. Les documents produits avec LATEX et TEX
sont d'une excellente qualité typographique.
Plain TEX écrit également par D. E. Knuth, était le premier jeu
(minimal) de macros par dessus TEX. De même Eplain, de K. Berry,
est un jeu de macros intermédiaire entre TEX et LATEX.
Suite à une large diffusion de LATEX beaucoup d'extensions ont
été créées par différents utilisateurs. Grâce à Murphy, ces extensions
ont introduit un certain nombre d'incompatibilités et ont porté atteinte
à la portabilité de LATEX. C'est de cette situation qu'est né le
projet de normalisation LATEX3, sous la direction des gurus LATEX
: L. Lamport, F. Mittelbach, C.
Rowley, R. Schopf et tant d'autres... Pour plus de détails, consulter
: http://www.latex-project.org/
Toutefois, pour ne pas perturber les actuels utilisateurs de LATEX,
la version provisoire normalisée s'appelle (1994) et elle
est compatible (dans la mesure du possible) avec les anciens standards.
Ainsi tous les documents écrits pour LATEX2.09 peuvent être compilés
sous en mode ``LATEX2.09 compatibility mode''.
- Remarque :
- cette compatibilité sera amenée à disparaître au fur
et à mesure des évolutions vers LATEX3.
Les membres du projet LATEX3 travaillent actuellement sur le futur
LATEX3. Autrement dit, ne devrait plus beaucoup évoluer.
Il existe aussi omega, une extension 16 bits de TEX qui utilise
unicode comme représentation interne et autorise ainsi la composition
de textes multi-lingues dans les langues telles que l'arabe, le chinois
ou les langues du continent indien. Pour plus de renseignements, vous
pouvez consulter : les cahiers GUTenbeg, TUGboat, ftp://ftp.ens.fr/pub/tex/yannis/omega-babel/, ...
Signalons également NTS, un projet à très long terme qui vise d'abord
à enrichir TEX mais qui à terme, n'en gardera que les concepts.
1.2 Quels sont les principes de base de TEX ?
Le principe de base de TEX est la boîte ! TEX met tout dans
des boîtes et l'assemblage de ces boîtes suivant des règles données
permet de mettre en page des documents.
A l'origine, TEX a été conçu aussi bien pour créer des documents
d'une page de texte, que des documents de plusieurs centaines de pages
contenant des formules mathématiques, des tableaux, des figures, etc.
TEX travaille donc comme un imprimeur sans subir les contraintes
mécaniques inhérentes aux outils de ce dernier.
Sa précision est sans limite puisque son unité de base est le point
et que les calculs qu'il suscite sont effectués par les ordinateurs.
Un des avantages de TEX est qu'il possède une vision globale des
choses. TEX ne se place pas uniquement au niveau du caractère que
l'auteur frappe mais aussi au niveau du mot, de la ligne, du paragraphe,
de la page ou du document dans son entier pour évaluer ses critères
de beauté. La dimension esthétique du document est ainsi prise en
compte et gérée de manière à ce qu'elle soit maximale.
Les critères de beauté utilisés dépendent le plus souvent des règles
typographiques attachées à la langue ou au langage employé (mathématiques
par exemple), mais il peut également, à tout moment, prendre en compte
les goûts de l'auteur. TEX gère ainsi la ponctuation, les ligatures,
les coupures de mots et les justifications verticales et horizontales.
Un autre avantage de TEX est la facilité avec laquelle il donne
accès à toutes ces possibilités de composition. En mathématiques par
exemple, il offre une quantité incroyable de symboles et connaît leurs
conventions de mise en page (taille, fonte, espacement, etc).
Un dernier avantage couvre tous les problèmes de numérotation des
paragraphes, de tables des matières, des figures, de références croisées,
de bibliographie, d'index, etc, etc. Toutes ces aides de lecture sont
gérées automatiquement par TEX. L'auteur a peu à s'en soucier,
il n'a qu'à les déclarer.
En conclusion, vous n'avez qu'à penser au contenu de votre document,
TEX se charge du reste.
1.3 Quels sont les principes de base de LATEX ?
LATEX peut être considéré comme un langage de programmation évolué
dans le sens où il s'appuie sur TEX qui est un langage de plus
bas niveau. Langage de programmation signifie également que le document
que l'on veut créer doit être décrit dans un fichier source (.tex)
puis doit être compilé. Ainsi, le compilateur LATEX prend en entrée
un fichier source écrit en LATEX et produit en sortie un fichier
.dvi (device independent). Ce fichier peut ensuite être converti en
fichier postscript avant d'être imprimé. Les fichiers dvi et postscript
peuvent être visualisés à l'écran à l'aide de (pre)viewers.
L'intérêt du format dvi est qu'il permet à TEX et LATEX d'être
indépendants du matériel qui sera utilisé pour la visualisation ou
l'impression finale du document.
Le fichier source (fichier.tex) doit comprendre un certain nombre
de commandes (balises) LATEX qui vont permettre au compilateur
LATEX de construire un fichier ``device independent'' (.dvi).
La plupart des commandes LATEX se caractérisent par le fait qu'elles
commencent par un ``backslash'', que leurs arguments obligatoires
apparaissent entre accolades ({ et }) et que leurs arguments optionnels
apparaissent entre crochets ([ et ]). La structure minimale d'un
rapport est en est la suivante :
- Exemple :
-
-
\documentclass{classe}
\begin{document}
Votre texte...
\end{document}
%%%% fin exemple %%%%
- Remarque :
- Le passage de LATEX2.09 à se traduit dans
l'en-tête des documents par :
-
\documentclass[options]{class}
\usepackage{style}
\usepackage{package}
au lieu de :
-
\documentstyle[options,styles,packages]{class}
- ATTENTION
- toutefois, certains styles LATEX2.09 ne seront pas reconnus
par .
Les commandes LATEX décrivent ainsi la classe d'un document, sa
structure, etc. Les principales classes de document disponibles sont
: 'article', 'report', 'book', 'letter' et 'slides'. Il existe également
un certain nombre d'options qui permettent de modifier le style par
défaut d'une classe (le format a4, la taille de la fonte 12pt, etc).
Ces classes et options permettent de disposer d'une structure de base
pour un document, mais libre à vous ensuite de définir vos propres
structures grâce aux styles offerts, aux packages disponibles notamment
sur les sites CTAN (cf. paragraphe ) et/ou à vos propres
macros TEX et LATEX.
L'intérieur d'un document de classe 'article', 'report' ou 'book'
est ensuite structuré grâce aux balises disponibles de type : \part{},
\chapter{}, \(sub)*section{},
etc. Les lettres et les transparents font appel à d'autres structures
particulières (cf. chapitres et ).
Les informations présentées dans ces structures peuvent être mises
sous différentes formes grâce à des environnements tels que tabular
ou itemize.
- Exemple
- :
-
\documentclass[12pt]{report}
\usepackage{french}
\title{Mon premier document {\LaTeX} \\
Qu'il est beau ! !}
\author{C'est moi l'auteur.}
\begin{document}
\maketitle
\tableofcontents
\part{Une partie.}
\chapter{Un chapitre.}
Texte...
\section{Une section.}
Texte...
\section{Une autre section.}
Texte...
\subsubsection{Avec une sous-section.}
Texte...
\subsubsection{Plus une autre.}
\begin{table}[htbp]
\begin{center}
\begin{tabular}{|c||c|}
\hline
donn\'ees & donn\'ees \\
\hline
\end{tabular}
\caption{Titre table. \label{table-}}
\end{center}
\end{table}
\part{Une courte deuxi\`eme partie.}
Texte...
\appendix
\chapter{Et une annexe pour finir.}
Texte...
\begin{itemize}
\item bla bla 1
\item bla bla 2
\end{itemize}
\end{document}
%%%% fin exemple %%%%
1.4 Qu'est ce que le préambule du fichier source ?
Les appels à des packages ainsi que les définitions de nouvelles commandes
sont placés dans le préambule du document LATEX (i.e. entre les
balises \documentstyle (LATEX2.09) ou \documentclass
() et la commande \begin{document}).
1.5 Comment faire ses premiers pas ?
En plus de la présentation faite ci-dessus quelques notions supplémentaires
sont utiles à la compréhension de LATEX. Celles-ci concernent essentiellement
la saisie d'un texte.
Lors que l'on désire travailler dans une langue comportant des caractères
accentués LATEX propose des saisies un peu barbares surtout aux
yeux des débutants (\'{e} pour é par exemple) mais
qui permettent de conserver la portabilité du document ainsi saisi
sur tous systèmes (caractères codés sur 7 bits). En revanche l'utilisation
de fontes contenant des caractères accentués (codées sur 8 bits) réduit
cette portabilité (pour plus de détails lire les questions
et ).
Autre remarque importante du point de vue de la gestion des espaces
et des retours chariot inclus dans le fichier source (.tex) d'un document.
LATEX gère tout seul les espaces : il est inutile de taper plusieurs
espaces de suite entre deux mots, ils seront transformés en un seul
dans le fichier .dvi.
En outre, UN retour chariot est considéré comme un espace, sauf s'il
est suivi d'un deuxième, il marque alors la fin d'un paragraphe et
le prochain sera indenté. On peut alors sauter autant de lignes que
l'on veut dans le texte, cela n'a aucun effet supplémentaire. Un passage
à la ligne peut être forcé par \\ ou
par \newline mais dans ce cas, la première ligne du
nouveau paragraphe ne sera pas indentée. \\*
empêche un saut de page après le saut de ligne demandé. La commande
\par permet de commencer un nouveau paragraphe en laissant
un espace vertical plus important et en indentant.
- Remarque :
- la commande \\[lgr]{}
peut prendre comme paramètre une longueur lgr pour augmenter localement
un interligne.
En LATEX, tout ce qui suit un % n'est pas lu, jusqu'au prochain
retour chariot. (Au passage le caractère % peut alors être obtenu
par \%.)
1.6 Comment sont gérées les options de package ?
Quand on utilise plusieurs packages :
-
\usepackage{package1,package2}
et que l'on veut utiliser une option du package1 qui n'existe pas
pour le package2, on peut écrire :
-
\usepackage[option1]{package1}
\usepackage{pckge2}
Cela évite un message du type ``unknown option1 for pckge2'' qui
peut apparaître quand on écrit
-
\usepackage[option1]{package1,package2}
On peut également écrire :
-
\documentclass[option1,gnagna]{article}
\usepackage{pckge1,pckge2}
qui permet de conserver l'ordre de chargement des packages mais pas
celui dans lequel seront exécutées les options par tel package. Les
options de classe sont globales et descendent à toutes les extensions
chargées si elles sont définies pour ces extensions (certaines options
sont par nature globales comme draft, final, french, a4paper, dvips...).
1.7 Quelle est la structure d'une page LATEX ?
La commande \layout du package 'layout' permet de visualiser
la structure d'une page et ses différents paramètres. Globalement
elle est composée du corps du texte, d'une entête et d'un pied de
page. Des marges sont également définies de chaque côté du corps du
texte.
- Exemple
- :
-
\documentclass{report}
\usepackage{layout}
\begin{document}
\layout
\end{document}
%%%% fin exemple %%%%
A chaque classe de documents sont associées différentes valeurs aux
paramètres de mise en page. L'utilisateur peut également redéfinir
ces valeurs de paramètres. Cela lui permet de gérer sa propre mise
en page. Cette FAQ donne un certain nombre de moyens dans ce but.
Pour les documents devant être imprimés en recto-verso, \oddsidemargin
définit la marge gauche des pages impaires (recto), et \evensidemargin
la marge gauche des pages paires (verso). Pour les documents simple
face, la commande \oddsidemargin suffit.
Les principaux paramètres d'une page sont les suivants :
- \textheight définit hauteur du texte.
- \textwidth définit la largeur du texte.
- \columnsep définit l'espace entre colonnes pour un
document multi-colonnes.
- \columnseprule définit la largeur de la ligne qui sépare
les colonnes d'un document multi-colonnes (par défaut ce paramètre
vaut 0pt i.e. pas de ligne).
- \columnwidth définit la largeur d'une colonne. Ce paramètre
est calculé automatiquement par LateX d'après \textwidth
et \columnsep.
- \linewidth définit la longueur de la ligne courante.
Ce paramètre est généralement utilisé dans des environnements qui
redéfinissent les marges.
- \evensidemargin définit un espace supplémentaire dans
la marge gauche des pages paires des documents recto-verso.
- \oddsidemargin définit cet espace pour les pages impaires
d'un document recto-verso ou pour toutes les pages dans le cas d'un
document recto uniquement.
- \footskip définit la distance entre la dernière ligne
du texte et la première ligne du bas de page.
- \headheight définit la hauteur de l'entête.
- \headsep définit la distance entre la dernière ligne
d'entête et la première ligne du corps du document.
- \topmargin définit un espace supplémentaire au-dessus
de l'entête.
- \marginparpush définit l'espace vertical minimum entre
deux notes de marge.
- \marginparsep définit l'espace horizontal entre entre
le corps du document et les notes de marge.
- \marginparwidth définit la largeur des notes de marge.
- \paperheight définit la hauteur du papier sur lequel
le document sera imprimé.
- \paperwidth définit sa largeur.
1.8 Quelles sont les commandes de compilation LATEX ?
A partir d'un fichier source fichier.tex, pour générer un fichier
fichier.dvi, il faut appliquer :
-
latex fichier.tex
Lorsqu'une compilation échoue sur une erreur, la ligne où est située
l'erreur est indiquée. L'emplacement de l'erreur dans la ligne est
précisé par un retour à la ligne. Une explication succincte de l'erreur
est également fournie.
- La commande ? permet alors d'avoir un menu d'aide.
- La commande h peut permettre d'avoir une explication plus détaillée
de l'erreur sur laquelle LATEX s'est arrêté.
- La commande return peut permettre de forcer la suite de la compilation.
- La commande s permet de visualiser les messages d'erreur suivants.
- La commande r permet de poursuivre la compilation sans arrêt.
- La commande q permet de continuer la compilation sans messages.
- La commande i permet d'insérer quelque chose (une balise oubliée par
exemple) pour pouvoir poursuivre la compilation.
- La commande e permet d'éditer le fichier source.
- La commande x permet d'abandonner la compilation.
- Un chiffre de 1 à 9 permet d'ignorer les x prochains caractères du
source.
Lorsque la compilation se termine normalement, elle produit un fichier
fichier.dvi qui peut être visualisé par un utilitaire tel que :
-
(UNIX) xdvi fichier.dvi
A partir d'un fichier fichier.dvi, pour générer un fichier postscript,
il faut utiliser un utilitaire tel que :
-
(UNIX) dvips fichier.dvi
Le fichier fichier.ps alors généré peut être imprimé. Par exemple
:
-
(UNIX) lpr -Pimprimante fichier.ps
1.9 Quels sont les fichiers utilisés par LATEX ?
Il en existe différentes sortes :
- les fichiers de compilation sont des .tex, .ltx, .toc, .lof, .lot,
.idx, .ilg, .ind, .ist, .bbl, .bib, .blg, .bst, .aux, .dvi, .log,
.texlog, .lis, .list, .ps,
- les styles où macros sont définis dans des fichiers .cls, .clo, .dtx,
.sty, .fmt,
- les caractères sont décrits dans des fichiers .tfm, .mf, .fd, .pk.
1.10 A quoi correspondent les messages Overfull ?
Lorsque LATEX n'arrive pas à satisfaire tous ses critères de beauté,
il peut avoir à en violer un. Cette entorse est alors indiquée par
un message de type :
-
Overfull \hbox (4.02349pt too wide) in paragraph at
lines 95-98
qui précise le type de dépassement, sa valeur et sa localisation.
Voici une liste d'ouvrage en ligne ou d'imprimeur qui
vont vous permettre de devenir des pros de LATEX. Un gros investissement
en terme de lecture et de travail est néanmoins nécéssaire. Il faut
un peu souffrir pour avoir de beaux documents
2.1 Que puis-je lire sur TEX ?
- ``The TEXbook'', de D. E. Knuth (Addison Wesley, 1984)
- ``Le petit livre de TEX'', de R. Seroul, (Interéditions, 1989)
- ``Introduction to TEX'', de N. Schwarz (Addison Wesley, 1989)
- ``TEX for the beginner'', de W. Snow (Addison Wesley, 1992)
- ``TEX for the impatient'', de P. Abrahams, K. Berry et K. Hargreaves
(Addison Wesley, 1990)
- ``The advanced TEX book'', de D. Salomon (Springer Verlag,
1995)
- ``La maîtrise de TEX et LATEX'', de T. Lachand-Robert (Masson,
1995). Ce document peut être très utile à ceux qui veulent programmer/comprendre/adapter
des macros/packages TEX. Principalement orienté vers TEX, quelques
rares et courts passages à propos de LATEX.
- ``A TEX Primer for Scientists'', de S. Sawyer et S. Krantz
(CRC Press,1995)
- ``TEX by example: A Beginner's Guide'', de A. Borde (Academic
Press, 1992).
- ``TEX: The Program'', de D. E. Knuth (Addison Wesley, 1986)
- ``TEX by Topic'' de V. Eijkhout est complémentaire au TEX
book.
Il est disponible sur http://www.cs.utk.edu/~eijkhout/tbt.html.
2.2 Que puis-je lire sur LATEX2.09 ?
- ``LATEX, a Document Preparation System'', de L. Lamport (Addison
Wesley, 1ère édition)
- ``LATEX reference manual'', de L. Lamport (Addison Wesley)
- ``LATEX, Manuel utilisateur simplifié'', de C. Simian (CNRS)
- ``La maîtrise de TEX et LATEX'', de T. Lachand-Robert (Masson,
1995)
2.3 Que puis-je lire sur ?
- Le fichier usrguide.tex de la distribution LATEX décrit les changements
entre LATEX2.09 et .
- ``LATEX, a Document Preparation System'', de L. Lamport (Addison
Wesley, 1994- 2nde édition)
- ``The LATEX companion'', de M. Goossens, F. Mittelbach, et
A. Samarin (Addison Wesley, 1994). Pour une présentation plus complète,
consulter : http://www.awl.com/cseng/.
- ``A Guide to , document preparation for beginners and
advanced users'', de H. Kopla & P.W. Daly (Addison Wesley, 1995)
- Remarque :
- très bien pour qui cherche un guide très complet. En
particulier, il met en permanence l'accent sur ce qui est différent/spécifique
entre et LATEX2.09.
- Une nouvelle version existe : "A Guide to LATEX: Third
Edition - Document Preparation For Beginners And Advanced Users",
de H. Kopla & P.W. Daly (Addison Wesley, 1999). Pour une présentation
plus complète, consulter : http://www.awl.com/cseng/
- ``LATEX guide pratique - version 2e'', de C. Rolland, (Addison
Wesley, 1995)
- Une nouvelle version existe : "LATEX par la pratique",
de C. Rolland (O'Reilly, 1999) Pour une présentation plus complète,
consulter : http://www.editions-oreilly.fr/catalogue/latex.html
- ``Joli manuel pour '', de B. Bayart. Ce manuel est disponible
sur ftp://ftp.fdn.org/pub/CTAN/info/JMPL.ps.gz.
- ``, un aperçu'', de M. Goossens au CERN disponible sur
http://tex.loria.fr/.
- ``Apprends LATEX'', de M. Baudoin (manuel de l'ENSTA). Cette
documentation est disponible sur le WEB par ftp sur ftp://ftp.agm-ita.ensta.fr/pub/babafou/.
- ``Essential LATEX'', de J. Warbrick. Ce document très pédagogique
permet de réaliser un document LATEX en quelques minutes. Il est
disponible sur CTAN (cf. paragraphe ).
- M. Herrb a traduit en français ``The not so short introduction
to '' de T. Oetiker. La version française est disponible
par ftp sur ftp://ftp.laas.fr/pub/Logiciels/latex/flshort/ ou
sur http://www.laas.fr/~matthieu/cours/latex2e/. Elle comprend
quelque compléments français spécifiques. On y trouve :
- flshort2e.dvi.gz Le fichier DVI
- flshort2e.ps.gz Le fichier PostScript
- flshort2e.tar.gz Les sources
- ``Objectif LATEX'', de V. Gramet et J.P. Regourd (Masson, 1995)
- ``The LATEX Graphics Companion'' de M. Goossens, S. Rahtz et
F. Mittelbach (Addison Wesley, 1997). Pour une présentation plus complète,
consulter : http://www.awl.com/cseng/.
- "The LATEX Web Companion", de M. Goossens, S.
Rahtz, E. Gurari et R. Moore (Addison Wesley, 1999). Pour une présentation
plus complète, consulter : http://www.awl.com/cseng/
- TEX est intégralement documenté dans le TEX book. Quand on connaît
le TEXbook sur le bout des doigts, on peut lire source2e disponible
à l'adresse : http://www-fourier.ujf-grenoble.fr/~bouche/PDFtex/source2e.pdf.
- "LATEX Apprentissage, guide et référence", Bernard
Desgraupes, Collection Publication électronique, Vuibert, Paris, 2000.
Sans beaucoup plus de coquilles que le "LATEX par la pratique"
contient des renseignements sur le multilinguisme (babel, french,
langues > asiatiques, CJK, pinyin, vietnam, arabtex, hebtex ...) et
sur les encodages & polices & création de fontes virtuelles. 735
pages, lexique anglais-français typo, index.
2.4 Que puis-je lire sur AMS-LATEX ?
2.5 Que puis-je lire sur la typographie ?
- ``Le développement des caractères'', de H. E. Meier, (Syntax Press,
Cham, Suisse).
- ``Pour une sémiologie de la typographie'', de G. Blanchard, (édité
par Remy Magermans en Belgique, vendu par ``Rencontres de Lure'',
BP 533 71010 Macon cedex). Il s'agit de la partie ``illustrations''
de la thèse de G. Blanchard avec quand même un peu de texte... Le
texte complet n'est disponible qu'en italien: ``L'eredita Gutenberg'',
(Gianfranco Altieri Editore). Ouvrage fondamental...
- ``Manuel de typographie élémentaire'', de Y. Perousseaux, (1995).
- ``La chose imprimée'', de Dreyfus et Richaudeau, (Retz, 1985).
- Lexiques des règles typographiques en usage à l'imprimerie nationale,
ISBN 2-11-081075-0 3ème édition novembre 1990.
- Voir également les sites :
- Il existe également la lettre ``The Newsletter of Digital Typography''.
Elle est disponible gratuitement par e-mail à imprint@macline.com
(mettre IMPRINT comme sujet).
- ``The Elements of Typographic Style'' de R. Bringhurst.
2.6 Où trouver une bibliographie complète ?
http://www.loria.fr/tex/texbib.html propose une bibliographie
tenue à jour.
2.7 Que puis-je lire sur les fontes ?
Toutes les bonnes urls, pour découvrir, apprendre, télécharger
LATEX. Le système Comprehensive TEX Archive Network rassemble
en un même endroit, toutes ces informations.
3.1 Où trouver des infos sur le WEB ?
CTAN ou Comprehensive TEX Archive Network Le système CTAN se propose
de rassembler diverses informations concernant TEX et son environnement
suivant une organisation commune. En particulier, tous les sites dits
CTAN ou leurs miroirs essaient de se synchroniser pour offrir des
informations cohérentes. En voici quelques uns :
- France :
- Allemagne :
- Grande-Bretagne
- Pays-Bas :
- Espagne :
- États-Unis :
Une liste complète des sites CTAN peut être trouvée sur ftp://ftp.fdn.org/pub/CTAN/usergrps/info/usergrps.tex.
- ATTENTION (08/96) :
- Le serveur d'archives (La)TEX aux États-Unis,
ftp.shsu.edu, n'étant plus à jour par défaut de maintenance, il est
fortement déconseillé désormais d'y récupérer des utilitaires (La)TEX.
Il reste donc les 2 serveurs CTAN < < de base > >,
l'anglais et l'allemand, ainsi que leurs fidèles copies en France
dont celle du LORIA-CNRS à Nancy : ftp://ftp.loria.fr.
La plupart des sites CTAN offrent une fonctionnalité QUOTE SITE INDEX
qui permet d'accéder plus rapidement à l'information que l'on recherche
sous forme d'expression régulière. En France, le mieux est de consulter
: http://www.loria.fr/cgi-bin/ctan-index.
- Remarque
- : il existe une liste de diffusion des annonces CTAN : CTAN-Ann@SHSU.edu.
Pour s'y abonner, il faut envoyer un mail à listserv@SHSU.edu.
- http://tex.loria.fr/ présente le (La)TEX Navigator. On peut
y trouver de nombreux pointeurs (sur des docs dont cette FAQ, des
personnes, des packages, des outils LATEX, des sites ftp, CTAN,
...) et de nombreuses informations concernant Tex, LATEX, ,
LATEX3, AMS-LATEX, BibTEX, SliTEX, ....
- ftp://ftp.gutenberg.eu.org/pub/gut/ et http://www.gutenberg.eu.org/
proposent également de nombreuses informations dont un certain nombre
de distributions pour Mac, PC et stations. Ce site présente également
un certain nombre d'archives et de publications dont notamment les
lettres et les cahiers GUTenberg.
- Le TEX macro index de D. M. Jones disponible par ftp anonyme sur
ftp://theory.lcs.mit.edu/pub/tex/TeX-index recense un certain
nombre de macros et styles LATEX actuellement existants.
- Autres sources d'informations (résumés de commandes, guides) :
- Un catalogue des outils TEX et LATEX, mis à jour régulièrement
est disponible sur : http://www.dit.csiro.au/~gjw/texpkgs.html.
Ce catalogue présente une liste des packages disponibles avec une
courte description de chacun. Il est mirroré par les sites CTAN sur
ftp://ftp.fdn.org/pub/CTAN/help/Catalogue/. Une version gzip
de ce catalogue est disponible sur : http://www.cdrom.com/pub/tex/ctan/help/Catalogue/catalogue.html.gz.
Voici quelques exemples de sites :
3.2 Où trouver cette FAQ ?
- Cette FAQ sera mensuellement postée dans fr.comp.text.tex, dans fr.usenet.reponses
et dans news.answers. Sa parution sera juste mentionnée dans comp.text.tex.
- Diverses versions de cette FAQ existent en html ou en postscript.
Notez cependant que ce ne sont pas les dernières versions.
Référez vous au LATEX Navigator :
- Des versions html sont également disponibles, sans être à jour, un
grand merci à leurs auteurs :
- Elle est disponible sur ftp://ftp.fdn.org/pub/CTAN/help/LaTeX-FAQ-francaise/.
- Elle est également accessible sur le WEB :
- Par ailleurs, elle est incluse dans certaines distributions Linux
et aussi sur le CD-ROM AsTEX.
3.3 Existe t'il des listes de discussion francophones ?
Il existe la liste gut@ens.fr (de l'association GUTenberg) dont
les archives sont stockées sur : http://www.univ-rennes1.fr/LISTES/gut@ens.fr/arc/maillist.html
et sur lesquelles on peut faire des recherches par auteurs, sujets,
etc.
Pour s'inscrire, envoyer un mail:
-
To: listserv@ens.fr
From: votre_nom_d'utilisateur@votre.site
Subject:
subscribe gut Votre_Nom Votre_institution
Pour se désabonner :
-
mailto:listserv@ens.fr
Subject:
unsubscribe gut
Voir aussi le site Web de GUTenberg, http://www.gutenberg.eu.org/.
Il existe également la liste omega@ens.fr. Cette liste de diffusion
concerne Omega, une extension de TEX développée par John Plaice
et Yannis Haralambous. Pour vous abonner, envoyer un courrier électronique
à listserv@ens.fr, sans sujet ni signature, dont le corps du
message contient exclusivement la ligne : subscribe omega PRENOM NOM
La liste de diffusion « typographie » est consacrée aux problèmes
de composition, de typographie - française ou étrangère - et de mise
en pages, sans exclusive des techniques employées : du lettrage à
la main à la composition numérique en passant par le plomb, du support
papier à la page écran, du « bon usage » du Code typographique jusqu'aux
normalisations du codage des caractères.
Ses abonnés ont en commun l'amour de la chose imprimée, y compris
sous ses formes modernes. Pour s'inscrire, envoyez à listserv@irisa.fr
le message suivant :
-
SUBSCRIBE typographie
3.4 Où trouver d'autres FAQs LATEX ?
Chapter 4
Sources TEX et LATEX
Les distributions TEX/LATEX sont souvent libres.
Les sources sont donc disponibles et il est possible de les télécharger.
De plus elles sont disponibles pour la plupart des systèmes d'exploitation
du monde informatique.
4.1 Où trouver les sources pour Unix ?
La distribution GUTenberg est disponible par ftp sur
ftp://ftp.gutenberg.eu.org/pub/gut/. Elle est basée sur MlTEX
(adapté à ), TEX, Metafont. Les binaires sont disponibles
pour :
- Sun4 sous solaris 2.x et SunOS 4.1.x
- IBM RS6000 sous AIX 3 et 4
- Silicon graphics sous irix4, 5 et 6
- HP7xx sous Hpux9 et 10
- HP9000 en Hpux 10
- DECalpha sous OSF/1
- DECstation 3100 sous Ultrix
- PC sous Linux
- PC i86 en Solaris 2
Différentes distributions source Unix de TEX sont disponibles sur
ftp://ftp.fdn.org/pub/CTAN/systems/unix/.
La distribution teTEX pour Unix, Linux ou Irix est disponible sur
ftp://ftp.fdn.org/pub/CTAN/systems/unix/teTeX/distrib/. A l'origine,
cette distribution a été développée pour Linux. Il existe également
un package 'config' qui offre des fichiers de configuration de cette
distribution disponibles sur ftp://ftp.fdn.org/pub/CTAN/systems/unix/teTeX/contrib/.
4.2 Où trouver les sources pour VMS ?
TEX pour VMS est disponible sur ftp://ftp.fdn.org/pub/CTAN/systems/vms/
puis Alpha/ ou VAX/ suivant l'architecture utilisée.
La distribution OpenVMS VAX et AXP de GUTenberg est disponible par
ftp sur ftp://ftp.gutenberg.eu.org/pub/gut/. Elle s'appuie sur
TEX et .
4.3 Où trouver les sources pour DOS, OS/2, Windows3.x/95/NT ?
- Une distribution TEX pour PC, incluant LATEX, BibTEX, previewers,
et drivers est disponible par ftp anonyme sur ftp://vax.eedsp.gatech.edu/pub/TeX/.
- emTEX de E. Mattes, pour PC sous MS-DOS, Windows ou OS/2, est disponible
par ftp anonyme sur ftp://ftp.fdn.org/pub/CTAN/systems/msdos/emtex.
Cette distribution inclut LATEX, METAFONT, BibTEX, TEXcad...
Il existe également emtexgi sur ftp://ftp.fdn.org/pub/CTAN/systems/msdos/emtex-contrib/emtexgi/
qui est une interface Windows pour emTEX. Il existe une liste de
discussion emTEX : majordomo@physik.tu-berlin.de.
- Une version emTEX francisée de M. Lavaud (Michel.Lavaud@univ-orleans.fr),
distribuée par AsTEX (cf. question ) est disponible
par ftp sur ftp://ftp.univ-orleans.fr/astex/. L'installation
de la nouvelle version 2.2 est entièrement automatisée, ainsi que
la configuration des pilotes (dviscr, dviwin, dvips), GSview, Gnuplot
et les interfaces TEXShell, MicroEmacs et MenuTEX. Il y a une
fonction d'installation / desinstallation sélective avec une vingtaine
de types d'installation différents pour installer tout ou partie de
la distribution, et plusieurs modes d'installation (ajouter, écraser,
mettre à jour, désinstaller, module par module).
- Il existe même une liste de discussion AsTEX : astex@univ-orleans.fr.
Pour s'inscrire, il faut envoyer le message HELP à listserv@univ-orleans.fr.
- 4AllTEX, très complet, nécessite 4DOS (un remplacement de command.com)
pour l'utilisation de ses .btm (.bat améliorés). 4AllTEX inclut
une interface (TEXelmExtel) sous windows (TEX, , BibTEX,
makeindex, ...) Vous trouverez l'ensemble sur ftp://ftp.fdn.org/pub/CTAN/systems/.
- gTEX sous MS-DOS et windows est disponible sur ftp://ftp.fdn.org/pub/CTAN/systems/msdos/gtex/.
Son avantage est de fonctionner en 32bits à la fois sous Windows (3.x,
95 et NT) et sous Dos via un extender fourni. Cette distribution comprend
micro-emacs, dviwin, etc.
- Win32 MiKTEX de C. Schenk, pour windows 95 et NT, est une version
compilée de (il supporte même les longs noms de fichiers).
MiKTEX est disponible par ftp sur ftp://ftp.fdn.org/pub/CTAN/systems/win32/miktex/.
- DOS-GUT (distribution francisée par GUTenberg) est disponible par
ftp sur ftp://ftp.gutenberg.eu.org/pub/gut/PC/DOS-GUT/. Cette
distribution est basée sur gtex et web2c. Elle comprend l'éditeur
TEXshell, TEX, TEX-XeT, plain, LATEX, babel, ArabicTEX,
dviscr, dvips, metafont et GhostScript.
- Remarque :
- la distribution DOS-GUT n'est plus activement développée.
Elle a été remplacée par WIN-GUT.
- WIN-GUT est une version intégrée pour windows 3.1, 95 et NT par P.
Legrand. Elle permet la composition de textes français (soit avec
babel, soit avec french), américain et arabe (ArabicTEX). Elle
comprend DVIWIN, dvips, micro-emacs.
- Il existe également Y&Y TEX System pour Windows. Pour plus d'informations,
vous pouvez consulter le site http://www.YandY.com/.
- PCTEX pour DOS, Windows3.1 et Windows95/NT, qui est moins puissant
que le précédent mais qui est très simple à mettre en place. Pour
plus de détails, consulter http://www.pctex.com/.
- EMTEXGI de A. Cottrell est une nouvelle distribution disponible à
http://www.wfu.edu/Academic-departments/Economics/ftp/emtexgi.html.
- F. Popineau a porté la version Unix de TEX (web2c 7, utilisé par
teTEX) sous Win32. Le but final étant de créer une distribution
windows la plus proche possible de teTEX. Cette distribution s'appelle
fpTEX. Pour plus de détails, consultez: http://www.ese-metz.fr/~popineau/fptex/.
- Cette distribution est native Win32, un peu plus rapide que MikTEX,
moins simple à installer (encore que...), dispose d'un magnifique
pré-visualiseur, windvi, et comporte e-TEX, PDFTEX, makeindex
et latex2html (en bêta).
4.4 Où trouver les sources pour MacOS ?
- La ``Macintosh TEX/LATEX Software Page'' : http://www.esm.psu.edu/mac-tex/
est la page de référence pour les utilisateurs de TEX sous MacOS:
les versions les plus récentes de CMacTEX, OzTex, Direct-TEX
Pro et de nombreux utilitaires (BibTex, MakeIndex, Excalibur (un correcteur
orthographique pour LATEX), Alpha...) sont disponibles sur cette
page, qui est mise à jour très régulièrement.
- Texture 2.1 est une version commerciale de TEX, développée par
Blue Sky Research. Pour plus d'informations, vous pouvez consulter
le site http://www.bluesky.com/.
- CMacTEX 4.0 shareware de de T. Kiffe, comprend TEX, Omega, pdftex,
e-TEX, BibTEX, makeindex, metafont, metapost, deux previewer
dvi, dvips, ps2pdf, un driver PostScript et quelques utilitaires de
gestion de fontes. CMacTEX est disponible sur ftp://ftp.fdn.org/pub/CTAN/systems/mac/cmactex/.
Pour plus de renseignements, consulter : http://www.kiffe.com/cmactex.html.CMacTEX
fonctionne à la fois sous Mac OS Classique et sous Mac OS X (environnement
Carbon)
- OzTex 4.0 de A. Trevorrow, est disponible par ftp sur ftp://ftp.fdn.org/pub/CTAN/systems/mac/oztex/.
Cette distribution shareware nécessite 3,5 Mo de mémoire vive. Elle
intègre un previewer dvi, BibTEX, makeindex, metafont, metapost,
dvips ainsi que TtH (TEX to html, d'Hutchinson). Une version shareware
de pdfTEX pour OzTEX a été développée par T. Kiffe. PdfTEX
pour OxTEX est disponible à l'adresse http://www.kiffe.com/pdftexoz.html.
- Direct-TEX Pro 2.1.2 de W. Ricken, est une distribution shareware
qui possède un environnement intégré et multi-fenêtre très pratique,
modulable de surcroît. Elle intègre TEX-XeT 3.14159 ainsi que
Metafont 2.718, et tous les utilitaires qui permettent de passer en
une passe d'un source (La)TEX au .ps final. Il y a même un éditeur
intégré, quoique petit. Direct-TEX est disponible sur ftp://ftp.fdn.org/pub/CTAN/systems/mac/directtex/.
Elle nécessite le système 7 et 8Mo de mémoire vive.
- Euro-Oztex de Y. Haralambous, est la distribution proposée par GUTenberg.
Cette version francisée appelle une contribution shareware à Trevorrow
et Ricken. Elle est disponible par ftp sur ftp://ftp.gutenberg.eu.org/pub/gut/MAC/Euro-OzTeX/.
- TEXShop est une implémentation native de TEX sous MacOS X (environnement
Cocoa), basé sur la distribution Unix standard teTEX. Le format
pdf étant un format interne de Mac OS X, TEXShop utilise pdftex
et pdflatex de préférence à tex et latex et produit des fichiers pdf
au lieu de dvi. TEXShop est distribué gratuitement sous licence
GPL et est disponible sur : http://darkwing.uoregon.edu/~koch/texshop/texshop.html.
- Remarque :
- Il semble qu'Euro-Oztex ne puisse plus être trouvé sur
le réseau. Quelque spécialiste du Mac pourrait nous éclairer sur la
question?
- Remarque :
- Euro-Oztex est une vieille version de la distribution
de GUTenberg. Elle utilisait OzTEX 1.7. Elle a été remplacée récemment
par Mac-GUT, qui elle utilise CMacTEX.
4.5 Où trouver d'autres sources ?
TEX pour Atari ST est disponible par ftp sur ftp://atari.archive.umich.edu/atari/tex/
ou sur ftp://ifi.informatik.uni-stuttgart.de/pub/atari.st/tex/
ou sur ftp://ftp.fdn.org/pub/CTAN/systems/atari/. Pour tous
renseignements contacter atari@atari.archive.umich.edu par un
mail ``help''.
PasTEX, implémentation de TEX 3.1 et METAFONT 2.7 sont disponibles
par ftp anonyme sur ftp://merlin.etsu.edu/ab20/AMIGA/ ou sur
ftp://forwiss.uni-passau.de/pub/amiga/tex/ ou sur ftp://ftp.fdn.org/pub/CTAN/systems/amiga/.
On peut trouver également PasTEX 1.4 sur les miroirs FTP aminet
(sunsite.cnam.fr. ftp.grolier.fr, ftp.netnet.net,
...) dans le répertoire /pub/aminet/text/tex/. PasTEX 1.4
est le portage de . La distribution comprend également dvips.
XFig est disponible dans /pub/aminet/gfx/edit/.
Ghostscript est disponible dans /pub/aminet/gfx/show/.
Une version a également été développée à l'ESIEE http://www.esiee.fr/~tex/Install/Amiga/index.html.
4.5.3 Tandy 6000
Pour tous renseignements contacter Ken Yap (ken@syd.dit.csiro.au).
Une distribution TEX sur TOPS-20 est disponible par ftp anonyme
sur ftp://ftp.math.utah.edu/pub/tex/pub/web/.
Les éditeurs ci-dessous sont classés par ordre alphabétique
sur le nom, afin d'éviter toute dispute sur la place de l'un ou l'autre.
Alpha est un éditeur Macintosh shareware assez proche d'emacs. Il
est disponible entre autres par ftp sur ftp://alpha.olm.net/pub/.
Cet éditeur est hautement configurable grâce à un langage de programmation
intégré, Tcl. Il possède entre autres un mode LATEX très convivial.
Alpha permet aussi une interaction avec le compilateur (Texture (commercial),
CMACTEX, OzTex ou Direct-Tex) en lançant la compilation d'une combinaison
de touches. La dernière version d'Alpha est la 7.2. Elle comprend
la version 3.2 des macros freeware Alpha LATEX de T. Scavo.
Pour plus de renseignements, voir http://alpha.olm.net/.
5.2 Cicero
Cicero est un traitement de texte sous X11R6 et Motif2.0. Le package
comprend des fontes X postscript, ghostscript, TEX (dvips) et Cicero.
Pour plus de renseignements, consulter : http://zeus.informatik.uni-frankfurt.de/~weis/cicero.html.
5.3 Eddi4TEX
Eddi4TEX, sous MS-DOS ou OS/2, est un éditeur spécifiquement conçu
pour TEX, il offre la couleur, vérifie la syntaxe. Il est disponible
sur ftp://ftp.fdn.org/pub/CTAN/systems/msdos/e4t/ ou dans ftp://ftp.fdn.org/pub/CTAN/systems/OS2/epmtex/.
5.4 (X-)Emacs
(X-)Emacs est un éditeur sous Unix qui offre en standard un mode d'édition,
un peu fruste mais néanmoins pratique, facilitant la composition de
documents (La)TEX. Une extension à emacs, AUC-TEX (disponible
sur ftp://ftp.fdn.org/pub/CTAN/support/auctex/ ou sur http://sunsite.auc.dk/auctex/),
fournit de nombreuses facilités supplémentaires (indentation automatique,
messages d'erreur en anglais compréhensible, gestion des documents
multi-fichiers, etc.)
Emacs reconnaît automatiquement certaines extensions (tex,sty...)
dans un nom de fichier, et active le mode en question automatiquement.
Si votre fichier n'est pas reconnu comme un document (La)TEX, vous
pouvez spécifier sur la première ligne de votre fichier : % -*-latex-*-
Les packages 'font-lock' et 'hilit19' ('hilit319' pour Xemacs) ou
plus récent 'font-latex' (basé sur font-lock), permettant de choisir
les couleurs et les polices mettant en évidence la syntaxe d'un fichier,
sont utilisables avec les modes (La)TEX. Pour plus de détails,
voir : ftp://ftp.fdn.org/pub/CTAN/support/ultratex/.
Le package (standard) 'imenu' donne accès à un menu listant les en-têtes
de section du document, et permet de retrouver celles-ci facilement
dans un grand document. Une extension à ce mécanisme permet de mieux
visualiser la structure du document, en indentant les sous-sections.
5.5 Funtek
Funtek, de V. Vidal, sous X-Windows system et Motif, est un éditeur
texte orienté LATEX, il traite le source LATEX page à page,
permet un accès aux symboles spéciaux, et une construction de tableaux
automatique. La version actuelle est une bêta.
5.6 GNU emacs
GNU emacs et AUCTEX peuvent également être utilisés sous MS-DOS
ou OS/2.
JED est un clone multi-plateformes proche d'emacs. JED est en fait
un emacs allégé qui offre des facilités dans l'édition de fichier
(La)TEX. Il tourne sous Unix/VMS/Dos/Win. Il est disponible à http://space.mit.edu/~davis/.
LYX est un traitement de texte sous X11 qui offre une sortie .
Il est presque WYSIWYG. LYX présente les avantages d'être petit,
rapide et gratuit. LYX est encore en développement. Une version
NON définitive est disponible à http://www.lyx.org/ ou par ftp
sur ftp://ftp.lip6.fr/pub/linux/sunsite/X11/xapps/editors/ ou
par ftp sur ftp://ftp.lyx.org/pub/lyx/ ou sur le web par http://www.lehigh.edu/~dlj0/LyriX.html.
Il existe également une liste de discussion : lyx@lyx.org.
Parmi les fonctionnalités, on trouve: - éditeur d'équations, - éditeur
de tables, - inclusion d'images au format EPS, - correction d'orthographe,
- etc.
Les dernières docs sont disponibles par ftp sur ftp://ftp.lyx.org/pub/lyx/doc/.
5.9 MicroEmacs
MicroEmacs (inclu dans la distribution DOS-GUT), sous windows, permet
d'éditer et de gérer des documents TEX.
NEdit est un éditeur entièrement conçu sous X dès le début. Il offre
des "look and feel" semblables aux éditeurs qu'on
trouve sur Windows et Mac, par ex, les touches de raccourcis standards
sont Ctrl+X pour couper, Ctrl+C pour copier, Ctrl+V pour coller. Ainsi,
les nouveaux utilisateurs immigrés des autres système d'exploitation
n'auront pas trop de mal à réadapter facilement NEdit. C'est un éditeur
très configurable, par ex la police des caractères, les couleurs (enfin,
parfois il faut être un peu bidouilleur aussi :) ). C'est un éditeur
à usage général. Il n'est pas seulement utile pour LATEX.
L'origine de cette discussion est de trouver un remplaçant de Kedit
pour Dos. Je suppose que ce programme a pas mal de fonctions qu'on
ne trouve pas ailleurs, ni sous NEdit. Mais il est possible de programmer
la plupart (si ce n'est pas tout) de ces fonctions sous NEdit à l'aide
de macro.
(Ce message, de Seak Teng-Fong, seak.teng-fong@iname.com, a été abrégé,
pour le message complet, référez vous à Message-ID: <3881E519.437B2409@iname.com>).
Pour plus de détails sur NEdit: http://www.nedit.org. NEdit
est sous licence GPL.
5.11 Scientific Word
Scientific Word pour windows est un éditeur qui permet presque de
visualiser un document LATEX en WYSIWYG (What You See Is What You
Get). Il facilite l'édition d'un document LATEX en permettant une
insertion aisée des symboles, l'édition de tableaux, ... par le "mulot"
ou par raccourcis clavier. Pour l'utiliser pleinement, il vaut mieux
connaître LATEX.
Remarque : ce produit est commercial et cher.
STEAD "Sympathetic Tk-based Editor for Average Dummies"
est un éditeur de texte convivial pour Unix (ressemble à Alpha sur
mac). Il est simple d'utilisation, contextuel et configurable. Recherche/remplacement
pouvant utiliser les expressions régulières - undo/redo multiniveau
- colorisation - transformation possible de la sélection (y compris
rectangulaire) par une commande Unix - ...
La particularité de cet éditeur est qu'il est entièrement interprété
! En effet, il est écrit en langage TCL et TK. Necessite l'ancienne
version wish3.6 (sources et binaire fournis).
Disponible sur : http://www.ensta.fr/~diam/stead/ Contact: Maurice
DIAMANTINI <diam@ensta.fr>
5.13 TEXnicCenter
TEXnicCenter, écrit par Sven Wiegand, est disponible sur ftp://ftp.fdn.org/pub/CTAN/systems/win32/TeXnicCenter/.
C'est un environnement de développement intégré (IDE en anglais) LATEX
pour Windows distribué sous liscence GPL. L'interface est très proche
de celle que l'on peut trouver dans des outils du style de MS Visual
Studio. Bien qu'encore à l'état de bêta, il offre la coloration des
mots clés, une gestion aisée de larges projets, une vue structurée
des fichiers, des sections du document, des flottants et plein d'autres
fonctionnalités fort intéressantes. Le correcteur orthographique est
prévu pour la prochaine bêta. Pour plus d'infos, vous pouvez consulter
sa page web : http://www.toolscenter.org/texniccenter/index.html.
5.14 TEXShell
TEXShell, écrit par J. Schlegelmilch, est disponible sur ftp://ftp.fdn.org/pub/CTAN/systems/msdos/texshell/ts271.zip.
C'est un éditeur Windows sous dos qui offre une coloration des mots
clés LATEX, une aide en ligne et d'autres petites fonctionnalités
telles que les compilations associées à des boutons. La distribution
DOS-GUT utilise TEXshell et offre un MicroEmacs francisé.
Il existe également TEXShell pour X Window system (Tcl/Tk) disponible
par ftp sur ftp://sunsite.unc.edu/pub/Linux/apps/tex/.
ViM, développé par Bram Moolenaar, dispose dans sa dernière version
de la coloration syntaxique, à l'instar d'emacs; à noter cependant
la légèreté de ViM par rapport à l'usine à gaz GNUienne. Vous trouverez
plus d'infos sur ViM sur http://www.vim.org/ ou par ftp sur
ftp://ftp.vim.org/pub/vim/ (également reflété par ftp.lip6.fr).
5.16 WINEDT95
WINEDT95,logiciel Shareware pour Windows 95, est un éditeur avec menu
TEX/LATEX qui permet de repérer les commandes LATEX et de
compter les délimiteurs. Il est disponible sur ftp://ftp.fdn.org/pub/CTAN/support/winedt/.
Il est pourvu d'un correcteur orthographique.
5.17 wintex95
wintex95 disponible sur ftp://ftp.fdn.org/pub/CTAN/systems/win32/wtex95/
est un éditeur flexible offrant un coloriage automatique de la syntaxe
LATEX. Il offre également une complétion automatique, et des palettes
de symboles, un éditeur de tableaux, des touches de raccourci, le
lancement de programmes externes, etc. C'est un shareware.
Xcoral, éditeur sous Unix offre des fonctionnalités de même type que
emacs mais non interactives. Il est disponible par ftp sur ftp://ftp.inria.fr/X/contrib-R5/clients/
ou sur ftp://ftp.x.org/contrib/.
Xcoral est un éditeur multi-fenêtres pour X Window System, offrant
un certain nombre de facilités notamment pour écrire des programmes
perl, ada, fortran, C, C++, java ainsi que des documents LATEX
ou HTML.
Cet éditeur comprend un interpréteur Ansi C 'built-in' qui permet
aux utilisateurs d'étendre ses fonctionnalités facilement. Un manuel
d'aide complet indexé est disponible on-line.
5.19 X-Window Shell pour TEX
X-Window Shell pour TEX (OpenLook ou Xaw/Xaw3d) disponible sur
http://www.tm.bi.ruhr-uni-bochum.de/personal/marc/xtexshell.html.
xtem: une interface graphique offrant des fonctionnalités TEX/LATEX
disponible sur http://ftp.lrw.uni-bremen.de/xtem/xtem_texmenu.html.
D'autres éditeurs sous dos, Mac et windows95 sont présentés dans http://www.jumbo.com/.
Chapter 6
Gestion de la mise en page
Mettre en page un document sous LATEX est assez simple
si l'on est capable d'attendre la compilation pour visualiser le document
final. Il est vrai que cela s'apparente plus à de la description de
page que du traitement de texte.
6.1 Comment modifier l'interligne d'un document ?
Pour modifier l'espace interligne d'un document on peut utiliser la
commande \linespread (solution non recommandée). Par
exemple, \linespread{1.6} permet de doubler l'intervalle
par défaut.
-
\renewcommand{\baselinestretch}{1.2}
placé dans le préambule permet d'obtenir le même résultat pour tout
le document.
Il existe également les packages 'doublespace' (pour LATEX2.09)
et 'setspace' (pour ) disponibles sur ftp://ftp.fdn.org/pub/CTAN/macros/latex2.09/contrib/misc/
pour l'un et ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/
ou ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/setspace/
pour l'autre. setspace.sty définit les environnements singlespace,
onehalfspace et doublespace. L'utilisation de ces styles est recommandée
parce que plus robuste (gestion des tableaux, des notes de bas de
page, ...).
Pour réduire l'interligne d'un paragraphe (à celui de small par exemple)
sans modifier la taille de la fonte on peut utiliser
-
\small{\normalsize texte à interligne réduit}\par
ou encore
-
{\advance\baselineskip -1pt le texte \par}
Localement, on peut également utiliser la commande \baselineskip
de la manière suivante :
- Exemple :
-
-
{\setlength{\baselineskip}{1.2\baselineskip}
Texte affecté
\par} %%% <= terminer le paragraphe
%%%% fin exemple %%%%
6.2 Comment gérer un document recto-verso ?
prévoit directement les options de classe twoside et openright.
- Exemple :
-
-
\documentclass[twoside,openright]{report}
%%%% fin exemple %%%%
En LATEX 2.09 il faut passer twoside comme option de la commande
documentstyle. Ensuite, pour forcer les entêtes de chapitre à commencer
sur une page impaire, il faut inclure la commande \cleardoublepage
avant chaque début de chapitre.
- Exemple :
-
-
\documentstyle[twoside]{report}
\begin{document}
\cleardoublepage
\chapter{Introduction.}
Texte.
\cleardoublepage
\chapter{Thèse.}
Texte.
\end{document}
%%%% fin exemple %%%%
Il existe également la macro suivante qui redéfinit la commande \cleardoublepage
pour que les pages insérées soient vides (i.e. sans entête ni bas
de page).
-
%%%% debut macro %%%%
% whitecdp (formerly schulzrinne.sty) --provide for blank pages
% between chapters
% This redefinition of the \cleardoublepage command provides
% for a special pagestyle for the "extra" pages which are generated
% to ensure that the chapter opener is on a recto page.
% The pagestyle is "chapterverso"; for many publishers, this should be
% identical to "empty", so that's the default.
\def\cleardoublepage{\clearpage
\if@twoside
\ifodd\c@page\else
\null\thispagestyle{chapterverso}\newpage
\if@twocolumn\null\newpage\fi
\fi
\fi
}%
\def\ps@chapterverso{\ps@empty}%
%%%% fin macro %%%%
6.3 Comment modifier le style des titres ?
Les définitions de \section, \sub(sub)section,
etc, se trouvent dans les fichiers .cls (report.cls, article.cls,
book.cls).
- ATTENTION :
- Il est vivement conseillé de ne pas modifier directement
ces classes mais de redéfinir un fichier.sty avec les nouvelles commandes
ou d'utiliser \makeatletter et \makeatother.
- Exemple :
-
La syntaxe de définition d'une nouvelle section est :
-
\renewcommand\section{\@startsection {section}{1}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}%
{2.3ex \@plus.2ex}%
{\reset@font\Large\bfseries}}
- Explication :
-
- La commande \@startsection permet de gérer : la table
des matières, la numérotation des titres, les références, les titres
des sections dans l'en-tête, etc...
- {section} indique qu'il s'agit d'une section
- {1} indique son niveau dans la table des matières
- {\z@} indique son niveau d'indentation (zéro)
- {-3.5ex \@plus -1ex \@minus -.2ex}
définit l'espace qui sera ajouté au dessus du titre
- {2.3ex \@plus.2ex} définit l'espace qui sera ajouté
en dessous du titre. Si ce nombre est négatif alors il s'agit d'un
espacement horizontal, pour avoir des titres ``en ligne'', comme
ça :
-
Titre de ma section. Nous allons parler... bla,
bla, bla...
- \@plus et \@minus permettent de jouer
sur l'élasticité de ces espaces
- {\reset@font\Large\bfseries}
sont les commandes de mises en forme du titre.
-
%%%% fin exemple %%%%
Pour augmenter l'espace avant une section il suffit, par exemple,
d'écrire, dans le préambule du document :
-
%%%% debut macro %%%%
\makeatletter
\renewcommand\section{\@startsection{section}{1}{\z@}%
{2cm \@plus -1ex \@minus -.2ex}%
{2.3ex \@plus.2ex}%
{\reset@font\Large\bfseries}}
\makeatother
%%%% fin macro %%%%
Le package 'sfheaders' de M. Loreti, ci dessous met les titres dans
une fonte sans serif quelle que soit la classe de document utilisée.
Pour l'utiliser, il suffit de sauvegarder les macros suivantes dans
un fichier SFheaders.sty et d'appeler \usepackage{SFheaders}.
-
%%%% debut macro %%%%
% Package: SFheaders.sty
% Sans-Serif headers; modified from {book|report|article}.cls
% defaults.
% Last modified: MLO 1997-05-06
%
% Author: Maurizio Loreti, aka MLO or (HAM) I3NOO
% Work: University of Padova - Department of Physics
% Via F. Marzolo, 8 - 35131 PADOVA - Italy
% EMail: loreti@padova.infn.it
% WWW: http://wwwcdf.pd.infn.it/loreti/mlo.html
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{sfheaders}[1997/05/06 Sans-Serif headers]
\@ifclassloaded{article}{
% Here if \documentclass{article}
\def\@part[#1]#2{%
\ifnum \c@secnumdepth >\m@ne
\refstepcounter{part}%
\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
\else
\addcontentsline{toc}{part}{#1}%
\fi
{\parindent \z@ \raggedright
\interlinepenalty \@M
\normalfont
\ifnum \c@secnumdepth >\m@ne
\Large \sffamily \bfseries \partnamethepart
\par\nobreak
\fi
\huge \sffamily \bfseries #2%
\markboth{}{}\par}%
\nobreak
\vskip 3ex
\@afterheading}
\def\@spart#1{%
{\parindent \z@ \raggedright
\interlinepenalty \@M
\normalfont
\huge \sffamily \bfseries #1\par}%
\nobreak
\vskip 3ex
\@afterheading}}
{\@ifclassloaded{book}{
% Here if \documentclass{book}
\def\@part[#1]#2{%
\ifnum \c@secnumdepth >-2\relax
\refstepcounter{part}%
\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
\else
\addcontentsline{toc}{part}{#1}%
\fi
\markboth{}{}%
{\centering
\interlinepenalty \@M
\normalfont
\ifnum \c@secnumdepth >-2\relax
\huge \sffamily \bfseries \partnamethepart
\par
\vskip 20\p@
\fi
\Huge \sffamily \bfseries #2\par}%
\@endpart}
\def\@spart#1{%
{\centering
\interlinepenalty \@M
\normalfont
\Huge \sffamily \bfseries #1\par}%
\@endpart}
\def\@makechapterhead#1{%
\vspace*{50\p@}%
{\parindent \z@ \raggedright \normalfont
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\huge \sffamily \bfseries \@chapapp\space \thechapter
\par\nobreak
\vskip 20\p@
\fi
\fi
\interlinepenalty\@M
\Huge \sffamily\ bfseries #1\par\nobreak
\vskip 40\p@
}}
\def\@makeschapterhead#1{%
\vspace*{50\p@}%
{\parindent \z@ \raggedright
\normalfont
\interlinepenalty\@M
\Huge \sffamily \bfseries #1\par\nobreak
\vskip 40\p@
}}
}{
% Here if none of the above (\documentclass{report} ?)
\def\@part[#1]#2{%
\ifnum \c@secnumdepth >-2\relax
\refstepcounter{part}%
\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
\else
\addcontentsline{toc}{part}{#1}%
\fi
\markboth{}{}%
{\centering
\interlinepenalty \@M
\normalfont
\ifnum \c@secnumdepth >-2\relax
\huge \sffamily \bfseries \partnamethepart
\par
\vskip 20\p@
\fi
\Huge \sffamily \bfseries #2\par}%
\@endpart}
\def\@spart#1{%
{\centering
\interlinepenalty \@M
\normalfont
\Huge \sffamily \bfseries #1\par}%
\@endpart}
\def\@makechapterhead#1{%
\vspace*{50\p@}%
{\parindent \z@ \raggedright \normalfont
\ifnum \c@secnumdepth >\m@ne
\huge \sffamily \bfseries \@chapapp\space \thechapter
\par\nobreak
\vskip 20\p@
\fi
\interlinepenalty\@M
\Huge \sffamily \bfseries #1\par\nobreak
\vskip 40\p@
}}
\def\@makeschapterhead#1{%
\vspace*{50\p@}%
{\parindent \z@ \raggedright
\normalfont
\interlinepenalty\@M
\Huge \sffamily \bfseries #1\par\nobreak
\vskip 40\p@
}}
}}
\renewcommand{\section}{\@startsection {section}{1}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}%
{2.3ex \@plus.2ex}%
{\normalfont\Large\sffamily\bfseries}}
\renewcommand{\subsection}{\@startsection{subsection}{2}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\normalfont\large\sffamily\bfseries}}
\renewcommand{\subsubsection}{\@startsection{subsubsection}{3}%
{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\normalfont\normalsize\sffamily\bfseries}}
\renewcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}%
{3.25ex \@plus1ex \@minus.2ex}%
{-1em}%
{\normalfont\normalsize\sffamily\bfseries}}
\renewcommand{\subparagraph}{\@startsection{subparagraph}{5}%
{\parindent}%
{3.25ex \@plus1ex \@minus .2ex}%
{-1em}%
{\normalfont\normalsize\sffamily\bfseries}}
\endinput
%%
%% End of `SFheaders.sty'.
%%%% fin macro %%%%
Le package 'fncychap' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/fncychap/
propose un ensemble d'entêtes de chapitre prédéfinies.
6.4 Comment obtenir un document multicolonnes ?
L'option standard twocolumn permet de présenter un texte sur deux
colonnes verticales.
- Exemple :
-
-
\documentclass[twocolumn]{article}
\usepackage{french}
\begin{document}
Voici un texte sur deux colonnes que \LaTeX n'équilibre pas
par lui-même (il remplit les colonnes les unes après les
autres). L'espace entre les colonnes peut être modifié comme
indiqué plus loin. Une ligne de séparation des colonnes peut
également être insérée.
\end{document}
%%%% fin exemple %%%%
Pour agir localement, on peut utiliser les commandes :
-
\twocolumn[texte sur une colonne]{texte sur deux colonnes}
puis
-
\onecolumn{Texte sur une colonne}
ou plus généralement
-
\twocolumn
et
-
\onecolumn.
Pour une meilleure lisibilité du source, on peut également utiliser
les environnements correspondants.
- Exemple :
-
-
\documentclass{article}
\usepackage{french}
\begin{document}
Dans la classe article, le texte est, par défaut, mis en page
sur une seule colonne. Il est toutefois possible de passer
temporairement sur deux colonnes.
\twocolumn[Un titre sur une colonne, un peu long pour le
prouver.]{Et voici enfin un texte sur deux colonnes; comme
promis! Encore une fois, \LaTeX n'équilibre pas le
remplissage des deux colonnes si bien qu'il est obligé pour
chaque changement de colonnage de changer de page.}
\onecolumn
Ceci permet de repasser sur une colonne pour la suite du
document.
\begin{twocolumn}
Encore quelques mots sur deux colonnes. Même si le texte est
trop court pour voir apparaître la deuxième colonne.
\end{twocolumn}
\end{document}
%%%% fin exemple %%%%
Le package 'multicol', disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/required/tools/,
définit l'environnement multicols qui permet de redéfinir localement
le nombre de colonnes désirées (10 maximum). Lorsqu'une page n'est
pas complète, le texte apparaît réparti sur toutes les colonnes. Ainsi
chaque changement de colonnage n'entraîne plus un changement de page.
- Exemple :
-
-
\documentclass{article}
\usepackage{multicol}
\usepackage{french}
\setlength{\columnseprule}{0.5pt}
\begin{document}
\begin{multicols}{3}[Titre sur une seule colonne.]
3colonnes équilibrées, 3colonnes équilibrées, 3colonnes
équilibrées, 3colonnes équilibrées
\end{multicols}
\begin{multicols}{2}[\section{Titre numéroté.}]
blabla sur deux colonnes, c'est plus sérieux. C'est le
style qui est généralement utilisé pour écrire des
articles.
\end{multicols}
\end{document}
%%%% fin exemple %%%%
Pour ajouter un titre numéroté qui apparaisse sur toute la largeur
de la page, il faut utiliser l'option [\section{Titre.}]
juste après \begin{multicols}{nb-col}.
- Remarques :
-
Pour qu'une ligne de séparation apparaisse entre les colonnes, il
faut utiliser :
-
\setlength{\columnseprule}{1pt}.
Pour redéfinir la largeur de l'espace inter-colonnes, il faut utiliser
-
\setlength{\columnsep}{30pt}.
6.5 Comment composer une brochure ?
Pour redéfinir un format de page, (par exemple un A4 plié en trois),
il faut utiliser la commande \setlength. Il suffit
de savoir quelles sont les longueurs à préciser, le meilleur moyen
pour ce faire est de les visualiser avec la commande \layout
(définie par le package 'layout' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/required/tools/).
-
%%%% debut macro %%%%
% (Th. Bouche)
\ProvidesPackage{a6size}
% rien a voir avec la taille : ajustement du \baselineskip
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xiipt{13.5}%
\abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
\belowdisplayskip \abovedisplayskip
\let\@listi\@listI}
\renewcommand\small{%
\@setfontsize\small\@xipt{12.4}%
\abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
\def\@listi{\leftmargin\leftmargini
\topsep 9\p@ \@plus3\p@ \@minus5\p@
\parsep 4.5\p@ \@plus2\p@ \@minus\p@
\itemsep \parsep}%
\belowdisplayskip \abovedisplayskip}
\normalsize
\setlength\paperheight {148mm}%
\setlength\paperwidth {105mm}%
%\voffset-1cm
%\hoffset-2cm
\setlength{\topmargin}{-1.3cm}%
\setlength{\oddsidemargin}{-.5cm}%
\setlength{\evensidemargin}{-1cm}%
\setlength{\marginparsep}{0\p@}%
\setlength{\headsep}{0\p@}%
% calcule la hauteur du texte en fonction du \baselineskip, pour
% que les lignes soient placées au même niveau sur toutes les pages
\setlength{\textheight}{\topskip}
\addtolength{\textheight}{22\baselineskip}%
\setlength{\textwidth}{7cm}%
\setlength{\footskip}{23\p@}% (originellement : 48)
%\setlength{\baselineskip}{13\p@}%
%\setlength{\marginparwidth}{0\p@} %
%\addtolength{\baselineskip}{.2\baselineskip}%
\setlength{\parindent}{0\p@}
%\addtolength{\headsep}{\headsep}
%\setlength{\push@skip}{.2\textwidth}
\newenvironment{page}{\vspace*{\stretch{1}}}
{\vspace*{\stretch{2.5}}\newpage}
\pagestyle{plain}
%%%% fin macro %%%%
Il faut ensuite opérer ce que les imprimeurs appellent une imposition
: imprimer la page tant à tel endroit de la x-ième feuille de telle
sorte qu'il n'y ait plus qu'à plier la liasse pour obtenir un livre
prêt à être relié. Cette étape est facile à réaliser soit à l'aide
de dvidvi (mais qui n'autorise pas les rotations, ce qui peut en limiter
l'intérêt pour des formats spéciaux) soit avec pstops :
-
pstops "2:0L@.7(21cm,0)+1L@.7(21cm,14.85cm)" un.ps deux.ps
disponible sur ftp://ftp.fdn.org/pub/CTAN/support/psutils/.
L'option a5paper de permet également de faire cela. Il faut
ensuite utiliser dvidvi et dvips en -t landscape. dvips est disponible
entre autres par ftp sur ftp://ftp.gutenberg.eu.org/pub/gut/sources/.
Le package 'a5booklet' est disponible sur ftp://ftp.fdn.org/pub/CTAN/dviware/a5booklet/.
Consulter également le package '2up' pour .
Le package 'poligraf' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/TeX-PS/cmyk-hax/
permet d'agir sur la mise en page d'un document avant impression.
psnup et psbook peuvent également permettre de faire de la composition
mais il vaut alors mieux travailler avec des polices postscript. Ces
utilitaires sont accessibles via : http://www.dcs.ed.ac.uk/home/ajcd/psutils/.
- Exemple (J.A. Ferrez) :
-
-
#!/bin/sh
#
# Turn a (clean) PS file into a booklet
#
# input on stdin or file in arg
#
# psbook -- reorder the pages
# see -s option for _very_ large files
# psnup -- scale and place two pages onto one
# pstops -- reverse the odd pages for duplex printing
#
# outup on stdout
#
psbook $1 | psnup -2 | pstops "2:0,1U(21cm,29.7cm)"
%%%% fin exemple %%%%
Le résultat est possible également en ne travaillant que sur le postscript
:
-
dvips -h twoup -t landscape fichier.dvi.
Sur PC on peut utiliser dvidrv.
Pour PC twoup fait cela, mais ce n'est pas du domaine public.
6.6 Comment définir un format de document ?
La structure d'une page LATEX permet de nombreux ajustements :
- \setlength{\textwidth}{??cm} permet
de fixer la largeur du texte
- \setlength{\textheight}{??cm} permet
de fixer la hauteur du texte
- \setlength{\oddsidemargin}{(-)??cm}
permet de définir la marge gauche des pages impaires
- \setlength{\evensidemargin}{(-)??cm}
permet de définir la marge gauche des pages paires
- \setlength{\topskip}{??cm} laisse
un espace en haut de page
- \setlength{\footskip}{??cm} laisse
un espace en bas de page
- \setlength{\headheight}{??cm} fixe
la hauteur de l'entête
- \addtolength{\topmargin}{(-)??cm}
- \addtolength{\textheight}{(-)??cm}
Il existe également les packages 'a4' et 'a4wide' disponibles respectivement
sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/ntgclass/
et dans ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/
qui permettent de redéfinir les marges et largeur de texte.
Le package 'geometry' est plus flexible que les précédents pour définir
son propre format de page. Il définit de nouvelles variables de structure
de la page. Il propose en outre un ensemble de formats par défaut
(a0paper, b5paper, legalpaper, ...).
6.7 Comment redéfinir les marges d'un document ?
Le package 'vmargin', de V. Kuhlmann, est disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/.
Il permet facilement de redéfinir globalement (pour tout le document)
les marges d'un document par la commande :
-
\setmarginsrb{1}{2}{3}{4}{5}{6}{7}{8}
1 est la marge gauche
2 est la marge en haut
3 est la marge droite
4 est la marge en bas
5 fixe la hauteur de l'entête
6 fixe la distance entre l'entête et le texte
7 fixe la hauteur du pied de page
8 fixe la distance entre le texte et le pied de page
Vous pouvez également utiliser des valeurs par défaut en rapport avec
le papier utilisé, par exemple:
-
\setpapersize{A4}
L'environnement changemargin décrit ci-dessous permet de modifier
localement les marges d'un document. Il prend deux arguments, la marge
gauche et la marge droite (ces arguments peuvent prendre des valeurs
négatives).
-
%%%% debut macro %%%%
\newenvironment{changemargin}[2]{\begin{list}{}{%
\setlength{\topsep}{0pt}%
\setlength{\leftmargin}{0pt}%
\setlength{\rightmargin}{0pt}%
\setlength{\listparindent}{\parindent}%
\setlength{\itemindent}{\parindent}%
\setlength{\parsep}{0pt plus 1pt}%
\addtolength{\leftmargin}{#1}%
\addtolength{\rightmargin}{#2}%
}\item }{\end{list}}
%%%% fin macro %%%%
- Exemple :
-
-
\begin{changemargin}{2cm}{-1cm}
Ceci permet d'augmenter la marge gauche de 2cm et de diminuer
celle de droite de 1cm.
\end{changemargin}
A comparer avec un texte qui occupe toute la largeur de la page,
comme celui-ci.
%%%% fin exemple %%%%
Le package 'geometry' permet de redéfinir les marges d'un document
ou de définir le layout de la page.
- Exemple 1 :
-
-
\geometry{margin=5pt}
équivalent à
-
\geometry{hmargin=5pt, vmargin=5pt}
équivalent à
\geometry{margin={5pt,5pt}}
%%%% fin exemple %%%%
- Exemple 2 :
-
-
\documentclass{report}
\usepackage{french}
\usepackage{geometry}
\geometry{scale=1.0, nohead}
\begin{document}
Ainsi, le texte apparaît beaucoup plus haut dans une page.
\end{document}
%%%% fin exemple %%%%
- Exemple 3 :
-
-
\documentclass{report}
\usepackage{french}
\begin{document}
Voici une page normale pour comparer.
\end{document}
%%%% fin exemple %%%%
Le package 'truncate' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/
permet de fixer la largeur d'un texte.
Il existe également le package 'typearea' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/script/.
L'environnement narrow, de K. Reckdahl, ci-dessous permet d'encapsuler
des paragraphes de largeurs différentes.
-
%%%% debut macro %%%%
%-----------------------------------------------------------------
% \begin{narrow}{1.0in}{0.5in} produces text which is narrowed
% by 1.0 on left margin and 0.5 inches on right margin
% \begin{narrow}{-1.0in}{-0.5in} produces text which is widened
% by 1.0 on left margin and 0.5 inches on right margin
% Narrow environments can be nested and are ended by \end{narrow}
%-----------------------------------------------------------------
\newenvironment{narrow}[2]{%
\begin{list}{}{%
\setlength{\topsep}{0pt}%
\setlength{\leftmargin}{#1}%
\setlength{\rightmargin}{#2}%
\setlength{\listparindent}{\parindent}%
\setlength{\itemindent}{\parindent}%
\setlength{\parsep}{\parskip}%
}%
\item[]}{\end{list}}
%%%% fin macro %%%%
6.8 Comment changer l'orientation d'un document ?
Globalement, pour passer en orientation paysage, il suffit de mettre
l'option landscape dans \documentclass ()
ou dans \documentstyle (LATEX2.09).
- Exemple :
-
-
\documentclass[landscape]{report}
\usepackage{french}
\begin{document}
Voici un document écrit dans un sens non conventionnel.
\end{document}
%%%% fin exemple %%%%
Le package 'lscape' de D. Carlisle (), disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/packages/graphics/,
permet de changer localement d'orientation portrait vers paysage et
vice versa. Il définit l'environnement landscape.
- Exemple :
-
-
\documentclass[11pt]{report}
\usepackage{lscape}
\begin{document}
\begin{landscape}
Un petit tour à la campagne,ldots
\end{landscape}
et nous voici de retour dans la galerie, après un changement de
page bien évidemment.
\end{document}
%%%% fin exemple %%%%
Il existe également le package 'rotating' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/rotating/.
- Exemple (tiré de la doc) :
-
-
\newcount\wang
\newsavebox{\wangtext}
\newdimen\wangspace
\def\wheel#1{\savebox{\wangtext}{#1}%
\wangspace\wd\wangtext
\advance\wangspace by 1cm%
\centerline{%
\rule{0pt}{\wangspace}%
\rule[-\wangspace]{0pt}{\wangspace}%
\wang=-180\loop\ifnum\wang<180
\rlap{\begin{rotate}{\the\wang}%
\rule{1cm}{0pt}#1\end{rotate}}%
\advance\wang by 10 \repeat}}
\wheel{Save the whale}
%%%% fin exemple %%%%
Il existe aussi le programme docstrip disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/unpacked/docstrip.tex.
Pour le cas où vous auriez un fichier dvi en landscape, vous pouvez
obtenir un fichier postscript propre en utilisant la commande:
- Exemple :
-
-
dvips -t a4 -t landscape -o tmp.ps toto.dvi
%%%% fin exemple %%%%
6.9 Comment justifier verticalement un paragraphe ?
L'environnement vcenterpage ci-dessous permet de centrer verticalement
un texte sur une page seule.
-
%%%% debut macro %%%%
\newenvironment{vcenterpage}
{\newpage\vspace*{\fill}}
{\vspace*{\fill}\par\pagebreak}
%%%% fin macro %%%%
- Exemple :
-
-
\begin{vcenterpage}
Texte qui apparaît au milieu de la page.
\end{vcenterpage}
%%%% fin exemple %%%%
6.10 Comment modifier la commande \caption ?
Le package 'hangcaption', disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/misc/,
dans lequel la commande \isucaption remplace la commande
\caption, permet de modifier la mise en page de cette
dernière. En particulier, il permet de définir \captionwidth.
Il existe également les packages 'caption' et 'caption2' disponibles
sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/caption/
qui permettent de modifier la commande \caption classique
(largeur, style, fonte, ...).
- Exemples :
-
-
\usepackage[small,hang]{caption2}
\renewcommand{\captionfont}{\it \small}
\renewcommand{\captionlabelfont}{\it \bf \small}
\renewcommand{\captionlabeldelim}{ :}
%%%% fin exemple %%%%
- Remarque :
- il est recommandé d'utiliser 'caption2' plutôt que 'caption'.
Le package 'topcapt' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/misc/
définit la commande \topcaption qui permet de placer
le texte de la commande caption au dessus du flottant auquel elle
est rattachée.
Le package 'french' de B. Gaulle propose la commande \unnumberedcaptions
qui permet de supprimer la numérotation des flottants.
Pour avoir une présentation du type :
-
Figure 1. Voici le texte de la légende d'une figure. Mais
lorsque la légende est longue, elle se présente
comme ceci.
au lieu de :
-
Figure 1. Voici le texte de la légende d'une figure. Mais
lorsque la légende est longue, elle se présente comme
ceci.
on peut utiliser
-
\caption[texte]{\protect\parbox[t]{wd}{texte}}
où wd est la largeur de la boîte (cette largeur peut être adaptée
à la taille de la figure automatiquement si la figure est elle-même
dans une boîte dont on récupère la largeur). \protect
est absolument nécessaire pour éviter une erreur. Le texte au début
[texte] est celui qui apparaîtra dans la table des figures (il
peut éventuellement être plus court).
Plus simplement, le package 'caption2' permet de faire la même chose
avec l'option hang.
La variable \figurename permet de redéfinir
le nom du titre de la figure. De même pour \tablename
et les tableaux.
- Exemple :
-
-
\def\figurename{Croquis}
%%%% fin exemple %%%%
6.11 Comment modifier un changement de page ?
- \newpage impose un changement brutal de page.
- \pagebreak[n] où n représente l'autorité avec laquelle
on veut changer de page (n compris entre 1 et 5). Cette commande garde
la justification, 1 impose une contrainte faible, 5 impose une contrainte
sévère.
- \nopagebreak[n] idem pour empêcher une coupure
de page.
- \clearpage agit comme un \newpage mais
libère le buffer de flottants.
- \cleardoublepage fait la même chose et force un redémmarrage
sur une page impaire.
- \enlargethispage{lgr} impose à de comprimer
(lgr négatif) ou d'expanser (lgr positif) le contenu d'une page. Ceci
pour éviter que la page suivante contienne trop peu de texte.
- Exemples :
-
-
\enlargethispage{1cm} % ajoute un cm
\enlargethispage{-2\baselineskip} % supprime deux lignes dans la
% page
%%%% fin exemple %%%%
- Remarque :
- \enlargethispage*{lgr} donne une autorité
plus grande à la commande \enlargethispage en l'obligeant
à agir sur les espacements élastiques verticaux contenus dans la page
courante.
J.P. Drucbert donne ci-dessous un petit papier décrivant un style
block.sty bricolé à partir de macro de diverses origines (dont D.
Arseneau, assez connu). Si vous passez LATEX sur ce papier, block.sty
sera créé. Les macros les plus intéressantes sont \need{dim}
et \lneed{N}, qui provoquent un saut de page s'il
reste moins que la dimension dim (ou N fois \baselinskip)
verticalement sur la page. Ce n'est pas parfait, mais cela m'a rendu
des services.
-
%%%% debut macro %%%%
\begin{filecontents}{block.sty}
\ifx\endBlock\undefined
\def\block{\begingroup%
\def\endblock{\egroup\endgroup}%
\vbox\bgroup}%
\long\def\Block{\begingroup%
\def\endBlock{\unskip\egroup\endgroup}%
\pagebreak[2]\vspace*{\parskip}\vbox\bgroup%
\par\noindent\ignorespaces}
\long\def\IBlock{\begingroup%
\def\endIBlock{\unskip\egroup\endgroup}%
\pagebreak[2]\vspace*{\parskip}\vbox\bgroup\par\ignorespaces}
\def\need#1{\ifhmode\unskip\par\fi \penalty-100 \begingroup
% preserve \dimen@, \dimen@i
\ifdim\prevdepth>\maxdepth \dimen@i\maxdepth
\else \dimen@i\prevdepth\fi
\kern-\dimen@i
\dimen@\pagegoal \advance\dimen@-\pagetotal % space left
\ifdim #1>\dimen@
\vfill\eject\typeout{WARNING- EJECT BY NEED}
\fi
\kern\dimen@i
\endgroup}
\def\lneed#1{\need{#1\baselineskip}}
% \begin{block} ... \end{block} delimite un bloc qui restera,
% si possible, sur une seule page.
\long\def\TBlock{\begingroup%
\def\endTBlock{\unskip\egroup\endgroup}%
\pagebreak[2]\vspace*{\parskip}\vtop\bgroup%
\par\noindent\ignorespaces}
\else
\typeout{block.sty already loaded}
\fi
\endinput
\def\need#1{\par \penalty-100 \begingroup
% preserve \dimen@, \dimen@i
\ifdim\prevdepth>\maxdepth \dimen@i\maxdepth
\else \dimen@i\prevdepth\fi
\kern-\dimen@i
\dimen@\pagegoal \advance\dimen@-\pagetotal % space left
\ifdim #1>\dimen@ \vfil \eject \fi
\kern\dimen@i
\endgroup}
\end{filecontents}
\documentclass[12pt,a4paper]{article}
\def\bs{\texttt{\char'134}}
\parskip=12pt plus1pt minus0.5pt
\usepackage[english,francais]{babel}
\usepackage[T1]{fontenc}
\usepackage[isolatin]{inputenc}
\begin{document}
\clearpage
\section{Paquetage \texttt{block}}\label{BLOCK+}
Ce paquetage offre divers outils permettant d'empêcher qu'une
rupture de page se produise à un certain endroit.
\subsection{Blocs Protégés}
Vous pouvez protéger une zone contre la rupture de page. Il
suffit pour cela de la placer dans un environnement
\texttt{Block} ou dans un environnement \texttt{IBlock}. Dans le
premier cas (\texttt{Block}), le premier paragraphe se trouvant
dans la zone ne sera pas indenté, mais le sera dans le second
cas (\texttt{IBlock}). Ceci est utile en particulier pour
éviter de séparer un texte et un exemple qui l'accompagne. Les blocs ainsi
protégés doivent, bien entendu, rester assez petits. La syntaxe
est (vous pouvez remplacer \texttt{Block} par \texttt{IBlock}):
\begin{quote}\tt
%\begin{tabular}{l}
\bs begin\{Block\}\\
\qquad\ldots\\
zone protégée\\
\qquad\ldots\\
\bs end\{Block\}
%\end{tabular}
\end{quote}
Cette méthode, très simple, a l'inconvénient de ne pas pouvoir
s'appliquer lorsque la zone à protéger doit contenir une
commande de sectionnement (c'est-à-dire du même type que
\verb|\section|), une note en bas de page, une note marginale ou
un corps mobile (figure ou table). Dans ce cas, il faudra
utiliser une des commandes du paragraphe suivant.
\subsection{Réservations Verticales}
Vous pouvez aussi demander de changer de page (ou de colonne, si votre
document est sur deux colonnes) s'il ne reste pas verticalement assez
de place sur la page. Deux commandes de réservation verticale sont
disponibles: \verb|\need{|{\em dimension\/}\verb|}|, dont le paramètre est une
longueur, et \verb|\lneed{|{\em nombre\/}\verb|}|, dont le paramètre est
le nombre de lignes équivalant à l'espace vertical demandé (avec cette forme
le paramètre est plus facile à estimer).
\end{document}
%%%% fin macro %%%%
Pour éviter les coupures de page (ou les coupures de colonnes avec
multicol.sty) à l'intérieur des \item dans une description
(et d'ailleurs dans toute liste), solution simple sortie du TEXbook :
-
\begin{description}\interlinepenalty 10000
6.12 Comment obtenir des colonnes parallèles ?
Le package 'parallel' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/parallel/
permet d'obtenir deux colonnes dont l'une peut contenir la traduction
de l'autre.
6.13 Comment définir l'espace de début de paragraphe ?
Il faut valoriser la variable \parindent.
- Exemple :
-
-
\setlength{\parindent}{1cm}
%%%% fin exemple %%%%
Pour agir localement, on peut utiliser \hspace*{lgr}.
Le package 'indentfirst' permet de forcer LATEX à indenter le premier
paragraphe après une nouvelle section (indentation normalement non
utilisée en typographie française).
6.14 Comment supprimer la date sur une page de titre ?
Il faut ajouter la commande
-
\date{}
dans le préambule du document.
6.15 Comment mettre en valeur la première lettre d'un chapitre ?
Il faut utiliser le package 'dropcaps' de F. Lauwers. Il est disponible
sur ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/dropcaps/.
Ce package est utilisable avec LATEX2.09 et .
Les packages 'initial' et 'initials' pour sont disponibles
sur CTAN. Le second que l'on peut trouver dans ftp://ftp.fdn.org/pub/CTAN/fonts/gothic/yinit/
fait appel à des fontes yinit particulières.
Il existe également un package 'drop' pour LATEX2.09, mais compatible
, disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/misc/.
- Exemple :
-
-
\documentclass[12pt,a4paper]{article}
\usepackage{drop}
\font\largefont=yinitas % fontes yinit
begin{document}
\drop{D}OES THERE EXIST a field with 4 elements?
\end{document}
%%%% fin exemple %%%%
'bigdrop' accessible sur CTAN dans/CTAN/digests/ttn est une macro
TEX compatible LATEX.
Le package 'bigstart' pour LATEX2.09 et permet également
de faire cela.
Il existe également le package 'picinpar' pour LATEX2.09 disponible
sur ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/picinpar/
et ftp://ftp.fdn.org/pub/CTAN/systems/msdos/4alltex/disk04/.
On peut également définir sa propre macro :
-
%%%% debut macro %%%%
\font\capfont=cmbx12 at 24.87 pt % or yinit, or...?
\newbox\capbox \newcount\capl \def\a{A}
\def\docappar{\medbreak\noindent\setbox\capbox\hbox{%
\capfont\a\hskip0.15em}\hangindent=\wd\capbox%
\capl=\ht\capbox\divide\capl by\baselineskip\advance\capl by1%
\hangafter=-\capl%
\hbox{\vbox to8pt{\hbox to0pt{\hss\box\capbox}\vss}}}
\def\cappar{\afterassignment\docappar\noexpand\let\a }
%%%% fin macro %%%%
- Exemple :
-
-
\cappar Il était une fois un petit chaperon rouge qui avait une
grand-mère qui habitait de l'autre côté de la foret. Un jour,
alors que sa grand-mère était malade, le petit chaperon rouge
décida de lui rendre visiteldots
%%%% fin exemple %%%%
Un petit dernier, le package 'dropping' qui étend le package 'dropcaps'
est disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/dropping/.
- Exemple :
-
-
\dropping{3}{\itshape{} Voici} un exemple de ce que permet de
faire le magnifique package dropping de M. Dahlgren. La commande
\texttt{\\dropping} peut prendre en argument un mot comme c'est le cas ici
ou une simple lettre.
%%%% fin exemple %%%%
Le package 'french' de B. Gaulle propose également la commande \lettrine.
- Exemple :
-
-
\lettrine{UN jour,} mon princeldots
%%%% fin exemple %%%%
Le paquetage 'lettrine' de Daniel Flipo propose lui aussi la commande
\lettrine, mais avec une diversité d'options inconnues
à french (nombre de lignes, forme, etc.) Tiré de la doc:
- Exemple :
-
-
\lettrine[lines=4, slope=-0.5em, lhang=0.5, nindent=0pt]{V}{oici}
%%%% fin exemple %%%%
6.16 Comment préserver les tabulations en mode verbatim ?
Le package 'moreverb' est disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/.
Il propose notamment un environnement verbatimtab qui permet de conserver
des tabulations.
- Exemple :
-
-
\begin{verbatimtab}
int pattern(char *p, int n, int m)
{
int orig = current_position();
int new_pos;
goto_line(n);
if(p && forward_search(p) && (current_line()<m)){
new_pos = current_position();
goto_char(orig);
return(new_pos);
}
return(-1);
}
\end{verbatimtab}
%%%% fin exemple %%%%
- Il existe également le package 'verbasef' (verbatim automatic segmentation
of external files) disponible sur CTAN. Il utilise l'environnement
figure.
- On peut également inclure les lignes suivantes dans le préambule du
document :
-
%%%% debut macro %%%%
\makeatletter
{\catcode`\I=\active
\gdef\verbatim{\catcode`\I=\active\defI{\hspace*{4em}}%
\@verbatim \frenchspacing\@vobeyspaces \@xverbatim}}
\makeatother
%%%% fin macro %%%%
6.17 Comment modifier les entêtes de chapitre ?
Il faut modifier la macro makechapterhead.
Ajouter, par exemple, dans le préambule :
-
%%%% debut macro %%%%
\makeatletter
\def\@makechapterhead#1{%
\vspace*{50\p@}%
{\parindent \z@ \raggedright \normalfont
\interlinepenalty\@M
\ifnum \c@secnumdepth >\m@ne
\Huge\bfseries \thechapter\quad
\fi
\Huge \bfseries #1\par\nobreak
\vskip 40\p@
}}
\def\@makeschapterhead#1{%
\vspace*{50\p@}%
{\parindent \z@ \raggedright
\normalfont
\interlinepenalty\@M
\Huge \bfseries #1\par\nobreak
\vskip 40\p@
}}
\makeatother
%%%% fin macro %%%%
6.18 Comment définir des tabulations ?
Il faut utiliser l'environnement tabbing qui permet de placer des
marques d'alignement dans un texte.
- Exemple :
-
-
\begin{tabbing}
Voici \= des \= marques \= de tabulation \\
\> la je m'aligne sur la première \\
\> \> \> la sur la troisième \\
\hspace{3cm} \= \hspace{2cm} \= \kill
un \> autre \> exemple.
\end{tabbing}
%%%% fin exemple %%%%
ce qui donne :
Voici ¯ des ¯ marques ¯ de tabulation
la je m'aligne sur la première
la sur la troisième
¯ ¯
un autre exemple.
6.19 Comment obtenir des lettres accentuées dans tabbing ?
- Pour produire un \'{e} dans un environnement tabbing
où la commande \' a été redéfinie, il faut utiliser
\a'{e} ou \a'e
- Le style suivant de J.P. Drucbert permet de remplacer l'environnement
standard tabbing par l'environnement Tabbing dans lequel les commandes
\` \' \> \<
\= \+ \- sont remplacées
par \TAB` \TAB' \TAB>
\TAB< \TAB= \TAB+ \TAB-
ce qui permet de préserver les commandes d'accent (\'
\` ou \=).
-
%%%% debut macro %%%%
\ProvidesPackage{Tabbing}[1996/01/16]
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\gdef\Tabbing{\lineskip \z@skip
% \let\>\@rtab
% \let\<\@ltab
% \let\=\@settab
% \let\+\@tabplus
% \let\-\@tabminus
% \let\`\@tabrj
% \let\'\@tablab
\def\TAB##1{\ifx ##1>\@rtab\else
\ifx ##1<\@ltab\else
\ifx ##1=\@settab\else
\ifx ##1+\@tabplus\else
\ifx ##1-\@tabminus\else
\ifx ##1`\@tabrj\else
\ifx ##1'\@tablab\else
\PackageError{Tabbing}%
{Bad argument ##1 for Tabbing
specification} \fi\fi\fi\fi\fi\fi\fi}
\let\\=\@tabcr
\global\@hightab\@firsttab
\global\@nxttabmar\@firsttab
\dimen\@firsttab\@totalleftmargin
\global\@tabpush\z@ \global\@rjfieldfalse
\trivlist \item\relax
\if@minipage\else\vskip\parskip\fi
\setbox\@tabfbox\hbox{\rlap{\indent\hskip\@totalleftmargin
\the\everypar}}\def\@itemfudge{\box\@tabfbox}%
\@startline\ignorespaces}
\gdef\endTabbing{%
\@stopline\ifnum\@tabpush >\z@ \@badpoptabs \fi\endtrivlist}
\endinput
%%%% fin macro %%%%
6.20 Comment encadrer du texte ?
- Une solution consiste à définir un tableau d'une seule cellule.
- On peut aussi utiliser :
-
\fbox{
\begin{minipage}{0.7\textwidth}
Texte...
\end{minipage}
}
- On peut également se définir son propre environnement.
- Exemple :
-
-
\newsavebox{\fmbox}
\newenvironment{fmpage}[1]
{\begin{lrbox}{\fmbox}\begin{minipage}{#1}}
{\end{minipage}\end{lrbox}\fbox{\usebox{\fmbox}}}
- Utilisation :
-
-
\begin{fmpage}{3cm}
Texte à encadrer dans une boîte ne dépassant pas 3
centimètres de large.
\end{fmpage}
%%%% fin exemple %%%%
Il existe également le package 'fancybox', disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/others/seminar/inputs/,
qui définit des fonctions telles que \shadowbox, \doublebox,
\ovalbox,...
- Exemple :
-
-
\shadowbox{Texte ombré.}
\doublebox{Texte doublement encadré.}
\ovalbox{Texte dans un cadre aux coins arrondis.}
%%%% fin exemple %%%%
ce qui donne :
-
%%%% debut macro %%%%
% eclbkbox.sty by Hideki Isozaki, 1992
% Date: May 28, 1993
\newbox\bk@bxb
\newbox\bk@bxa
\newif\if@bkcont
\newif\ifbkcount
\newcount\bk@lcnt
\def\breakboxskip{2pt}
\def\breakboxparindent{1.8em}
\def\breakbox{\vskip\breakboxskip\relax
\setbox\bk@bxb\vbox\bgroup
\advance\linewidth -2\fboxrule
\advance\linewidth -2\fboxsep
\hsize\linewidth\@parboxrestore
\parindent\breakboxparindent\relax}
% \@tempdimb: amount of vertical skip
% between the first line (\bk@bxa) and the rest (\bk@bxb)
\def\bk@split{%
\@tempdimb\ht\bk@bxb % height of original box
\advance\@tempdimb\dp\bk@bxb
\setbox\bk@bxa\vsplit\bk@bxb to\z@ % split it
\setbox\bk@bxa\vbox{\unvbox\bk@bxa}% recover height & depth of \bk@bxa
\setbox\@tempboxa\vbox{\copy\bk@bxa\copy\bk@bxb}% naive concatenation
\advance\@tempdimb-\ht\@tempboxa
\advance\@tempdimb-\dp\@tempboxa}% gap between two boxes
% \@tempdima: height of the first line (\bk@bxa) + fboxsep
\def\bk@addfsepht{%
\setbox\bk@bxa\vbox{\vskip\fboxsep\box\bk@bxa}}
\def\bk@addskipht{%
\setbox\bk@bxa\vbox{\vskip\@tempdimb\box\bk@bxa}}
% \@tempdima: depth of the first line (\bk@bxa) + fboxsep
\def\bk@addfsepdp{%
\@tempdima\dp\bk@bxa
\advance\@tempdima\fboxsep
\dp\bk@bxa\@tempdima}
% \@tempdima: depth of the first line (\bk@bxa) + vertical skip
\def\bk@addskipdp{%
\@tempdima\dp\bk@bxa
\advance\@tempdima\@tempdimb
\dp\bk@bxa\@tempdima}
\def\bk@line{%
\hbox to \linewidth{\ifbkcount\smash{\llap{\the\bk@lcnt\ }}\fi
\vrule \@width\fboxrule\hskip\fboxsep
\box\bk@bxa\hfil
\hskip\fboxsep\vrule \@width\fboxrule}}
\def\endbreakbox{\egroup
\ifhmode\par\fi{\noindent\bk@lcnt\@ne
\@bkconttrue\baselineskip\z@\lineskiplimit\z@
\lineskip\z@\vfuzz\maxdimen
\bk@split\bk@addfsepht\bk@addskipdp
\ifvoid\bk@bxb % Only one line
\def\bk@fstln{\bk@addfsepdp
\vbox{\hrule\@height\fboxrule\bk@line\hrule\@height\fboxrule}}%
\else % More than one line
\def\bk@fstln{\vbox{\hrule\@height\fboxrule\bk@line}\hfil
\advance\bk@lcnt\@ne
\loop
\bk@split\bk@addskipdp\leavevmode
\ifvoid\bk@bxb % The last line
\@bkcontfalse\bk@addfsepdp
\vtop{\bk@line\hrule\@height\fboxrule}%
\else % 2,...,(n-1)
\bk@line
\fi
\hfil\advance\bk@lcnt\@ne
\if@bkcont\repeat}%
\fi
\leavevmode\bk@fstln\par}\vskip\breakboxskip\relax}
\bkcountfalse
%%%% fin macro %%%%
L'encadrement du texte est obtenu par l'environnement breakbox.
- \bkcounttrue : les lignes sont numérotées.
- \bkcountfalse : elles ne le sont pas (défaut).
On peut emboîter des environnements breakbox.
6.21 Comment gérer des URL WWW ?
- Il existe le package 'url' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/
qui permet de gérer les coupures des URL WWW un peu longues. Il est
également capable de gérer les adresses e-mail, les liens hypertexte,
les noms de directories. En outre, cet outil est paramètrable.
- Exemple :
-
-
\usepackage{url}
\urlstyle{sf}
...
\url{http://hostname/username}
%%%% fin exemple %%%%
-
\discretionary{Avant la coupure}{après}{s'il n'y en a pas}
- Remarque :
- \- est défini comme \discretionary
{-}{}{}
6.22 Comment mettre en page des exercices dont les solutions sont reportées
dans un autre paragraphe ?
L'objectif ici est de pouvoir saisir dans le fichier source les textes
des exercices suivis de leurs solutions, alors qu'au niveau de la
mise en page du document, les solutions apparaîssent groupées dans
un autre paragraphe/chapitre.
Le package 'answers', de M. Piff, disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/answers/
permet également de réaliser ce genre d'exercice. Il permet entre
autres :
- d'avoir plusieurs types de solutions (ex: réponse numérique seule
ou détail),
- d'inclure les solutions (l'une, l'autre ou les deux dans le cas précité)
dans le texte (après une marque spécifique si désiré),
- mettre les solutions à la fin,
- ne pas mettre les solutions.
- Exemple :
-
-
%%
%% This is file `ansexam2.tex',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% answers.dtx (with options: `ex2')
%%
\documentclass[12pt,a4paper]{article}
\usepackage{answers}%\usepackage[nosolutionfiles]{answers}
% def d'un environnement Exercise numerote
\newtheorem{Exc}{Exercise}
\newenvironment{Ex}{\begin{Exc}\normalfont}{\end{Exc}}
% Trois types de solutions sont proposes
\Newassociation{solution}{Soln}{test}
\Newassociation{hint}{Hint}{test}
\Newassociation{Solution}{sSol}{testtwo}
\newcommand{\prehint}{Hint]}
\newcommand{\presolution}{Solution]}
\newcommand{\preSolution}{Homework]}
% test
\newcommand{\Opentesthook}[2]%
{\Writetofile{#1}{\protect\section{#1: #2}}}
% introduction de la solution
\renewcommand{\Solnlabel}[1]{\emph{Solution #1}}
\renewcommand{\Hintlabel}[1]{\emph{Hint #1}}
\renewcommand{\sSollabel}[1]{\emph{Solution to #1}}
\begin{document}
% gestion des fichiers contenant les solutions
\Opensolutionfile{test}[ans2]{Solutions}
\Writetofile{test}{\protect\subsection{Some Solutions}}
\Opensolutionfile{testtwo}[ans2x]
\Writetofile{testtwo}{%
\protect\subsection{Extra Solutions}}
% Exercices
\section{Exercises}
\begin{Ex}
An exercise with a solution.
\begin{solution}
This is a solution.
\relax{}
\end{solution}
\end{Ex}
\begin{Ex}
An exercise with a hint and a secret solution.
\begin{hint}
This is a hint.
\end{hint}
\begin{Solution}
This is a secret solution.
\end{Solution}
\end{Ex}
\begin{Ex}
An exercise with a hint.
\begin{hint}
This is a hint.
\end{hint}
\end{Ex}
% gestion des fichiers contenant les solutions
\Closesolutionfile{test}
\Readsolutionfile{test}
% \clearpage
\hrule
\Closesolutionfile{testtwo}
\Readsolutionfile{testtwo}
\end{document}
%%
%% End of file `ansexam2.tex'.
%%%% fin exemple %%%%
6.23 Comment positionner un objet dans une page ?
Pour pouvoir positionner un objet aux coordonnées x,y par rapport
au coin supérieur gauche d'une page, il suffit d'utiliser le package
'atxy' disponible par ftp sur ftp://ftp.univ-orleans.fr/pub/tex/PC/AsTeX/Paq_Base/
dans le fichier l209misc.zip.
- Exemple :
-
-
\atxy(3cm,2.5cm) {toto adresse toto}
\atxy(3cm,4cm) {date}
%%%% fin exemple %%%%
- Remarque :
- petit défaut, si le document ne contient que des commandes
\atxy il n'y a pas de dvi généré. Il faut donc ajouter
n'importe quoi au début du document, par exemple,
pour que ça marche.
6.24 Comment lier le placement des flottants aux sections ?
Pour lier la position des éléments flottants aux limites de sections,
D. Arseneau a développé le package 'placeins' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/.
Ce package définit la commande \FloatBarrier qui force
le placement des flottants avant son appel.
6.25 Comment griser le fond (background) d'un paragraphe
?
- Exemple :
-
-
\colorbox[gray]{0.5}{some words}
%%%% fin exemple %%%%
ce qui donne :
some words
6.26 Comment modifier l'espace inter-colonnes ?
Il faut modifier la variable \columnsep.
- Exemple :
-
-
\addtolength{\columnsep}{5mm}
%%%% fin exemple %%%%
6.27 Comment modifier les environnements de liste ?
L'environnement list permet de définir son propre style de liste.
Sa syntaxe est la suivante :
-
\begin{list}{label}{mep}\end{list}
- l'argument label permet de définir le symbole qui sera associé à chaque
élément de la liste.
- mep permet de définir la mise en page des éléments de la liste. Les
paramètres utilisés pour définir cette mise en page sont les suivants
:
- \topsep espace vertical supplémentaire (ajoute à \parskip)
inséré entre le texte précédant la liste et le 1er objet de la liste
- \partosep espace vertical supplémentaire inséré devant
la liste si celle-ci est précédée d'une ligne blanche
- \itemsep espace vertical supplémentaire (ajouté à \parsep)
inséré entre les éléments d'une liste.
- Exemple :
-
-
\newenvironment{maliste}%
{ \begin{list}%
{$\bullet$}%
{\setlength{\labelwidth}{30pt}%
\setlength{\leftmargin}{35pt}%
\setlength{\itemsep}{\parsep}}}%
{ \end{list} }
- Utilisation :
-
-
\begin{maliste}
\item premier élément
\item deuxième élément
\begin{maliste}
\item petit 1
\item petit 2
\end{maliste}
\end{maliste}
%%%% fin exemple %%%%
Le petit bout de code ci-dessous, de M. Boyer (mboyer@robot.ireq.ca),
définit les commandes :
- \noitemsep pour supprimer tout espacement vertical
entre les items des environnements \itemize, \enumerate
et \description.
- \doitemsep pour les remettre.
Pour l'utiliser, il suffit de le sauvegarder dans un fichier .sty
et de l'inclure dans son document par une commande \usepackage.
-
%%%% debut macro %%%%
%% ----------------------------------------------------
%% Copyright (c) 1993 Hydro-Quebec mboyer@robot.ireq.ca
%% ----------------------------------------------------
%% Bring items closer together in list environments
% Prevent infinite loops
\let\orig@Itemize =\itemize
\let\orig@Enumerate =\enumerate
\let\orig@Description =\description
% Zero the vertical spacing parameters
\def\Nospacing{\itemsep=0pt\topsep=0pt\partopsep=0pt%
\parskip=0pt\parsep=0pt}
% Redefinition de art12.sty pour commencer a la marge de gauche
%\leftmargini 1.2em % 2.5em
\def\noitemsep{
% Redefine the environments in terms of the original values
\renewenvironment{itemize}{\orig@Itemize\Nospacing}{\endlist}
\renewenvironment{enumerate}{\orig@Enumerate\Nospacing}{\endlist}
\renewenvironment{description}{\orig@Description\Nospacing}%
{\endlist}
}
\def\doitemsep{
% Redefine the environments to the original values
\renewenvironment{itemize}{\orig@Itemize}{\endlist}
\renewenvironment{enumerate}{\orig@Enumerate}{\endlist}
\renewenvironment{description}{\orig@Description}{\endlist}
}
%%%% fin macro %%%%
La macro ci-dessous de T. Murphy permet de remplacer les numéros de
l'environnement enumerate par des caractères grecs :
-
%%%% debut macro %%%%
\makeatletter
\def\greek#1{\expandafter\@greek\csname c@#1\endcsname}
\def\@greek#1{\ifcase#1\or$\alpha$\or$\beta$\fi}% as many as you
% need
\renewcommand{\theenumi}{\greek{enumi}}
\makeatother
%%%% fin macro %%%%
Les définitions suivantes :
-
\renewcommand{\labelitemi}{\textbullet}
\renewcommand{\labelitemii}{---}
\renewcommand{\labelitemiii}{votre-label-pour-le-niveau-iii}
\renewcommand{\labelitemiv}{votre-label-pour-le-niveau-iv}
permettent de redéfinir les caractères utilisés par l'environnement
itemize pour ces différents niveaux d'encapsulation.
- Remarque :
- avec certains packages comme french, il faut placer ces
nouvelles définitions de commande après le \begin{document}.
De même, utilisez \descriptionlabel pour changer le
style des étiquettes de l'environment description.
- Exemple :
-
-
\renewcommand\descriptionlabel[1]{\hspace\labelsep\normalfont%
\itshape #1:}
produit des étiquettes en italique, avec deux points :
\begin{description}
\item[Carte maîtresse] As
\item[Carte maîtresse à l'atout] Valet
\end{description}
%%%% fin exemple %%%%
Pour réduire globalement l'espace entre les items d'une liste on peut
également utiliser le bout de code suivant de M. Wooding
-
%%%% debut macro %%%%
\makeatletter
\toks@\expandafter{\@listI}
\edef\@listI{\the\toks@\setlength{\parsep}{1pt}}
\makeatother
%%%% fin macro %%%%
* Le package 'mdwlist', de M. Wooding, disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/mdwtools/
permet de redéfinir certains paramètres de mise en page des listes
qui ne sont pas faciles d'accès sous LATEX.
6.28 Comment souligner plusieurs lignes ?
Pour souligner un texte qui comprend des retours à la ligne, il faut
utiliser le package 'ulem' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/.
Ce package redéfinit en fait le mode emphasize. Les commandes \normalem
et \ULforem permettent de passer du mode \emph
classique au mode \emph souligné. En mode souligné,
la commande devient paramétrable pour changer le style du souligné
ou biffer des mots.
- Exemple :
-
-
\documentclass{report}
\usepackage{french}
\usepackage[normalem]{ulem}
\pagestyle{empty}
\begin{document}
\normalem
Voici le mode "\emph{emphasize}" classique.
\ULforem
Voici le mode "\emph{emphasize}" souligné. \emph{Il permet
également de gérer les retours à la ligne tout en restant dans
le style emphasize.}
Les autres possibilités sont les suivantes:
\begin{itemize}
\item vagues: \uwave{texte}
\item barré: \sout{texte}
\item rayé: \xout{texte}
\end{itemize}
\end{document}
%%%% fin exemple %%%%
- Remarque :
- \underline ne permet pas de gérer les
retours à la ligne du fait qu'il encapsule le texte passé en argument
dans une boîte.
6.29 Comment réaliser des onglets ?
Pour insérer un carré noir, décalé vers le bas à chaque nouveau chapitre,
le long de la marge des pages de droite d'un document, on peut utiliser
le package 'fancyhdr' ou 'fancyheadings'. Ces packages sont disponibles
sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/fancyhdr/
et ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/.
- Remarque :
- On note toutefois qu'il est peu probable qu'une imprimante
puisse accéder au ras de la marge. La solution consiste alors à définir
un format de document plus petit et utiliser le massicot. Attention
dans ce cas lors de la définition des marges.
On peut également utiliser le package 'onglet' défini ci-dessous par
B. Bayart. Celui-ci nécessite le package 'everyshi' disponible sur
ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/everyshi/.
-
%%%% debut macro %%%%
\ProvidesPackage{onglet}[1996/07/25 B. Bayart]
\RequirePackage{everyshi}
\newcounter{maxchapter}
\newcounter{tmpa}
\newlength{\basehauteur}
\setlength{\basehauteur}{1cm}
\newlength{\ajoutdroite}
\newlength{\htcclv}
\def\concatener{%
\setlength{\ajoutdroite}{\textheight}
\divide\ajoutdroite by \basehauteur
\setcounter{maxchapter}{\number\ajoutdroite}
\setcounter{tmpa}{\value{chapter}}
\addtocounter{tmpa}{-1}
\divide\value{tmpa} by\value{maxchapter}
\multiply\value{tmpa} by\value{maxchapter}
\advance\value{tmpa} by -\value{chapter}
\addtocounter{tmpa}{-1}
\setlength{\ajoutdroite}{\paperwidth}
\setlength{\htcclv}{\ht255}
\addtolength{\ajoutdroite}{-\wd255}
\addtolength{\ajoutdroite}{-1in}
\addtolength{\ajoutdroite}{-1.5cm}
\setbox255=\vbox{\hbox to \wd255{%
\box255%\relax
\rlap{\vbox to \htcclv{%
\vskip-\value{tmpa}\basehauteur
\hbox{%
\hskip\ajoutdroite\relax
\usebox{\laboite}%
}%
\vfill
}}%
\hfill}}%
}
\newsavebox{\laboite}
\def\faireboite{\sbox{\laboite}%
{\hbox to 1.5cm{\let\protect\relax
\huge\thechapter\hfill\vrule height 1em depth 0pt width 5mm}}}
\AtBeginDocument{\EveryShipout{\faireboite\concatener}}
\endinput
%%%% fin macro %%%%
6.30 Comment réaliser des QCM ?
Il existe le package 'exam' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/exams/.
Ce package permet entre autres de paramétrer les questions de manière
à ce que les propositions apparaîssent dans un ordre aléatoire.
- Exemple :
-
-
Combien le cheval possède t'il de pattes ?
\begin{choice}[\random]
\baditem{deux pattes}
\baditem{quatres pattes}
\baditem{zéro patte}
\end{choice}
%%%% fin exemple %%%%
6.31 Comment modifier l'orientation des flottants ?
Le package 'rotating' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/rotating/
offre deux environnements sidewaysfigure pour les figures et sidewaystable
pour les tableaux. Les figures ou tableaux sont alors insérés sur
une page séparée.
- Exemple :
-
-
\begin{sidewaystable}
\begin{tabular}{|c|c|}
\hline
Un & Deux \\
Trois & Quatre \\
\hline
\end{tabular}
\end{sidewaystable}
%%%% fin exemple %%%%
On peut également utiliser l'environnement sideways du package 'rotating'.
De la même manière cet environnement génère une page séparée.
- Exemple :
-
-
\begin{figure}
\begin{sideways}
\includegraphics{foobar.ps}
\end{sideways}
\end{figure}
%%%% fin exemple %%%%
- Remarque :
- il est fréquent que les visualiseurs de fichiers dvi
ne sachent pas gérer les changements d'orientation à l'intérieur d'un
document. Il faut pour voir le résultat définitif utiliser un visualiseur
de postscript.
6.32 Comment faire référence plusieurs fois à la même note de bas de page
?
Il faut utiliser les commandes \footnotemark[]
et \footnotetext[]{}. \footnotemark
permet de gérer le compteur de notes et \footnotetext
permet d'insérer le texte correspondant en bas de page.
- Exemple :
-
-
bla blabla\footnotemark[1] bla bla bla blablabla\footnotemark[2]
bla bla bla bla blabla\footnotemark[1] bla.
\footnotetext[1]{double bla}
\footnotetext[2]{triple bla}
%%%% fin exemple %%%%
ce qui donne :
bla blabla bla bla bla blablabla
bla bla bla bla blabla bla.
Avec french, on peut utiliser la commande \refmark.
- Exemple :
-
-
le vrai appel\footnote{C'est une note en bas de
page\label{manote}} et le deuxième appel\refmark{manote}
%%%% fin exemple %%%%
- Remarque :
- Si vous n'utilisez pas french, cette macro \refmark
est décrite dans le cahier Gutenberg numéro 15, avril 1993, page 52.
Ce cahier est accessible à l'URL : http://www.gutenberg.eu.org/publications/.
6.33 Comment éviter les orphelins en début ou fin de page ?
Il suffit d'ajouter les lignes :
-
%%%% debut macro %%%%
\widowpenalty=10000
\clubpenalty=10000
\raggedbottom
%%%% fin macro %%%%
dans le préambule du document.
Pour agir localement, on peut également utiliser la commande \enlargethispage
(cf. question ).
6.34 Comment définir de nouveaux flottants ?
Le package 'float' de G. Williams, disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/float/,
permet de définir de nouveaux objets flottants. Il définit notamment
des environnements permettant d'encadrer des objets ou de les séparer
du reste du texte par des lignes horizontales.
- Exemple :
-
-
\documentclass[11pt]{report}
\usepackage{float}
\usepackage{french}
\floatstyle{ruled} % pour que mes flottants soient séparés du
% texte par des lignes.
\newfloat{important}{htbp}{loi}[section]
% important est le nom de mon nouvel environnement
% htbp sont les options de placement de mon flottant
% loi est l'extension du fichier qui sera utilise pour
% construire la liste de mes flottants
% section est le niveau duquel dependra la numerotation
% de mes flottants
\floatname{important}{Important} % titre du caption
\begin{document}
\listof{important}{Liste des textes importants.} % titre de la
% liste de mes flottants.
\chapter{Règles de bases.}
\section{Hommes célèbres.}
Parmi les citations des hommes célèbres dans le domaine que
nous étudions actuellement, il faut retenir celle de M.
Maxime rappelée dans le cadreref{imp-max}.
\begin{important}
M. Maxime a dit un jour:
\begin{quote}
Chacun doit se faire ses propres raisons.
\end{quote}
\caption{Adage de M. Maxime.}
\end{important}
Notez queldots
\end{document}
%%%% fin exemple %%%%
6.35 Comment utiliser la commande \caption hors d'un environnement
flottant ?
Pour pouvoir attacher un titre de style table à un environnement non
flottant (i.e. autre que figure ou table), il faut définir :
-
%%%% debut macro %%%%
\makeatletter
\def\@captype{table}
\makeatother
%%%% fin macro %%%%
- Exemple :
-
-
Texte sur les couleurs.
\begin{itemize}
\item rouge
\item vert
\item bleu
\end{itemize}
\caption{Liste des couleurs primaires.}
Texte.
%%%% fin exemple %%%%
La macro suivante propose une autre possibilité pour obtenir un titre
de style table :
-
%%%% debut macro %%%%
\makeatletter
\def\captionof#1#2{{\def\@captype{#1}#2}}
\makeatother
%%%% fin macro %%%%
- Exemple :
-
-
\begin{document}
un texte
\captionof{table}{\caption{un titre ici}\label{foo}}
un autre texte
\end{document}
%%%% fin exemple %%%%
Le package 'capt-of' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/
définit la commande \captionof.
6.36 Comment encadrer un objet flottant ?
Il faut utiliser le package 'float' qui définit le style boxed. Ce
package est disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/float/.
Voir la question pour un exemple plus complet.
- Exemple :
-
Dans le préambule :
-
\floatstyle{ruled}
\newfloat{nom-flottant}{placement}{ext-fic}[numerotation]
dans le corps du document :
-
\begin{nom-flottant}
\end{nom-flottant}
%%%% fin exemple %%%%
Si le titre accompagnant le flottant peut être à l'extérieur du cadre
désiré, on peut alors utiliser \fbox dans la déclaration
du flottant.
- Exemple :
-
-
\begin{table}
\begin{center}
\fbox{
\begin{tabular}{cll}
&1 case & 2 cases \\
&3 cases & 4 cases \\\hline
Total: & 4 cases & 6 cases \\
\end{tabular}
}
\end{center}
\caption{Titre extérieur.}
\end{table}
%%%% fin exemple %%%%
M. Loreti propose également le package 'bigbox' ci-dessous :
-
%%%% debut macro %%%%
% I like to put boxes around all of my figures and algorithms in
% reports, and finally came up with my 'bigbox' environment. It
% makes a box as wide as the current text and sets the stuff
% inside with a narrower width.
%
% USAGE:
%
% \begin{figure} (or {table}, or {center}, or ...)
% \begin{bigbox}
% \begin{tabbing}
% ...
% \end{tabbing}
% \end{bigbox}
% \caption{XXX}
% \end{figure}
%
%%% BIGBOX - environment
%%%
%%% TOM SHEFFLER
%%% Carnegie Mellon, Aug 1990
%%%
%%% Make an environment for boxing a figure and setting it in
%%% a narrower width.
\newdimen\boxfigwidth % width of figure box
\def\bigbox{\begingroup
% Figure out how wide to set the box in
\boxfigwidth=\hsize
\advance\boxfigwidth by -2\fboxrule
\advance\boxfigwidth by -2\fboxsep
\setbox4=\vbox\bgroup\hsize\boxfigwidth
% Make an invisible hrule so that the box is exactly this wide
\hrule height0pt width\boxfigwidth\smallskip%
% Some environments like TABBING and other LIST environments
% use this measure of line size - \LINEWIDTH=\HSIZE-\LEFTMARGIN-\RIGHTMARGIN?
\linewidth=\boxfigwidth
}
\def\endbigbox{\smallskip\egroup\fbox{\box4}\endgroup}
%%%% fin macro %%%%
- Exemple :
-
-
\documentclass[11pt]{report}
\usepackage{graphics}
\usepackage{bigbox}
\usepackage{french}
\pagestyle{empty}
\begin{document}
\begin{figure}
\begin{bigbox}
\includegraphics{../foobar.ps}
\end{bigbox}
\caption{Dessin.}
\end{figure}
\end{document}
%%%% fin exemple %%%%
6.37 Comment changer l'orientation d'un caption ?
La commande \rotcaption fournie avec le package 'rotating'
permet de changer l'orientation d'un caption.
- Exemple :
-
-
\begin{figure}
\centering
\begin{minipage}[c]{1in}
\includegraphics[angle=90,width=\linewidth]{poussin.eps}
\end{minipage}
\begin{minipage}
\rotcaption{Ma jolie figure coco}
\label{coco}
\end{minipage}
\end{figure}
%%%% fin exemple %%%%
6.38 Comment mettre en page un programme ?
Les packages 'program' (disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/program/)
et 'programs' permettent de mettre en reliefs des mots clés, d'utiliser
des mathématiques dans des algorithmes, etc.
6.39 Comment inclure le source d'un programme ?
Les packages 'lgrind' et 'listings' répondent à la question (disponibles
sur ftp://ftp.fdn.org/pub/CTAN/support/lgrind/ et ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/listings/).
Ils reconnaissent tous les 2 à peu près 40 langages différents.
Le premier est composé d'un exécutable, 'lgrind' qui permet de transformer
le source en question, par exemple, monfichier.c, en monfichier.tex,
que l'on inclut directement dans son fichier LATEX, à l'aide d'une
commande appropriée. L'inconvénient, est qu'évidemment, il y a un
fichier .tex qui est généré en plus.
- Notes :
-
- utiliser au-moins la version 3.6 ;
- on peut paramétrer lgrind avec le fichier lgrindef. Par défaut, l'auteur
a jugé utile de transformer la lettre « à » en $\alpha$.
Il suffit donc de commenter cette option à la fin de ce fichier pour
éviter cela.
Le deuxième ne nécessite pas de recompilation. On inclut directement
le source, avec une commande adéquate. Avec ce package, on peut même
définir son propre langage, le faire hériter d'un autre langage, avec
des mots-clés spécifiques, etc.
À noter que, moyennant quelques paramètres à ajouter, il est tout
à fait possible de faire en sorte que ces packages reconnaissent les
fontes 8 bits. On peut lui faire comprendre par exemple, que lorsqu'il
rencontre le caractère « ¹ », il le transforme en $\mathonesuperior$.
6.40 Comment obtenir un espace insécable ?
Le caractère est interprété par LATEX et permet
d'obtenir un espace insécable.
- Exemple :
-
-
Comme le montre l'exemple suivant: $a + 2 = 0$.
%%%% fin exemple %%%%
6.41 Comment insérer une page blanche ?
Pour forcer LATEX à laisser une page blanche dans un document,
il faut utiliser successivement les trois commandes :
- \newpage
- \strut ou ou \mbox{}
ou \null
- \newpage
Le principe est qu'il y ait quelque chose d'invisible sur la page
blanche pour que LATEX la prenne en compte.
6.42 Comment supprimer l'indentation des paragraphes ?
\noindent au début du texte permet de ne pas indenter
un paragraphe.
Pour systématiquement supprimer l'indentation du premier paragraphe
d'une section par exemple, il faut redéfinir la commande \section.
Il faut que le 4ème paramètre de \@startsection soit
une distance négative, pour qu'il n'y ait pas de retrait au premier
paragraphe du texte qui suit :
-
%%%% debut macro %%%%
\makeatletter
\renewcommand\section{\@startsection {section}{1}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}%
%%%%%% (4eme parametre)
{2.3ex \@plus.2ex}%
{\normalfont\Large\bfseries}}
\makeatother
%%%% fin macro %%%%
6.43 Comment modifier l'espacement entre caractères ?
Le package 'letterspace' permet de modifier l'espacement entre mots
ou caractères.
Le package 'trackin' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/tracking/
permet de jouer sur les espacements dans les mots ou les phrases pour
les ajuster dans une longueur spécifiée.
6.44 Comment supprimer certaines coupures de mots ?
Pour agir sur un mot particulier, il faut utiliser la commande \hyphenation.
- Exemple :
-
Visualisation des coupures :
-
\showhyphens{mousehole AlGaAs GaAs GaInP AlInP}
Underfull \hbox (badness 10000) detected at line 0
[] \OT1/cmr/m/n/10 mouse-hole Al-GaAs GaAs GaInP Al-InP
Interdiction de certaines coupures :
-
\hyphenation{AlGaAs GaAs GaInP AlInP}
\showhyphens{mousehole AlGaAs GaAs GaInP AlInP}
Underfull \hbox (badness 10000) detected at line 0
[] \OT1/cmr/m/n/10 mouse-hole AlGaAs GaAs GaInP AlInP
%%%% fin exemple %%%%
Moins propre mais tout aussi efficace, on peut inclure le mot à ne
pas couper dans une hbox.
- Exemple :
-
-
Même quand il est en bout de ligne ce mot très long n'est pas
coupé CeMotTrèsLongNestPasCoupé.
Même quand il est en bout de ligne ce mot très long n'est pas
coupé \hbox{CeMotTrèsLongNestPasCoupé}.
%%%% fin exemple %%%%
Pour empêcher LATEX de couper les mots dans un paragraphe il suffit
de l'encadrer par les commandes \begin{sloppypar}
et \end{sloppypar}.
Pour empêcher LATEX de couper les mots dans tout un document, il
faut utiliser la commande \sloppy dans le préambule
du document. On peut également utiliser la déclaration :
-
\hyphenpenalty 10000.
De manière globale, on peut aussi déclarer :
-
\DeclareFontFamily{T1}{cmr}{\hyphenchar\font=-1}
Pour interdire la coupure de tous les mots commençant par une majuscule,
il faut utiliser : \uchyph=0 dans le préambule du document.
On peut également interdire la coupure des mots d'une langue particulière
dans un document multilingues en utilisant l'astuce suivante : il
suffit de créer un fichier de motifs de césures vide, par exemple
pour le russe
-
%%%% debut macro %%%%
%%% ruhyph.tex %%%
\patterns{}
\endinput
%%%%%%%%%%%%%%%%%%%
%%%% fin macro %%%%
et dans le fichier language.dat ajouter la ligne russian ruhyph.tex
6.45 Comment mettre en forme des équations chimiques ?
Le package 'ppchtex' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/context/
permet d'écrire des formules chimiques.
Sur Mac ou PC, il existe MDL qui est une version freeware d'ISIS Draw
qui permet de créer ses propres structures et de les sauver sous format
eps. Pour plus de détails, consulter http://www.mdli.com/prod/ioffer.html.
Il existe le package 'chemsym' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/chemsym/
peut également être utile.
Le package 'XymTex' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/xymtex/
ou ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/xymtex/
permet de définir des structures chimiques.
- Remarques (F. Jacquet) :
-
- XyMTEX est incompatible avec le package french de B. Gaulle. Pour
utiliser les deux dans un même document, il suffit de repasser en
mode \english avant la macros puis \french
après. Je ne sais pas comment celà fonctionne pour les \caption
mais en théorie, ça devrait marcher ! AL: Vérifier la réalité de cette
remarque par rapport au dernier french.
- XyMTEX possède le gros défaut de ne pas pouvoir faire de longues
chaînes aliphatiques si on ne sait pas programmer le nombre de points
entre deux structures. Le plus simple dans ce cas est donc l'emploi
de Xfig (ou autre).
- On ne peut pas imbriquer les formules, ce qui gène considérablement
son utilisation; en revanche, pour les cholestérol l'ensemble est
très puissant !
6.46 Comment mettre en page un calendrier ?
Le package 'termcal' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/termcal/
permet de mettre en page un calendrier. Il permet de préciser quels
jours doivent apparaître et d'insérer du texte soit régulièrement
à certaines dates soit à des dates particulières.
Le package 'calendar ' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/plain/contrib/
propose un ensemble de macros pour mettre en page des calendriers.
Un autre package 'calendar' est également disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/calendar/.
Il existe également le package 'yplan97' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/yplan97/.
6.47 Comment forcer un caption sur plusieurs lignes ?
Pour forcer un retour à la ligne dans un caption, il faut utiliser
-
\caption[text1]{text2 \\\hspace{\linewidth} text3}.
- Remarque :
- text1 est le texte qui apparaîtra dans la liste des figures
ou des tableaux.
6.48 Comment générer des barres de modification dans un document ?
Il suffit d'utiliser le package 'changebar' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/changebar/.
- Exemple :
-
dans le préambule :
-
\usepackage[outerbars]{changebar} % permet de positionner les
% barres en marge externe
\setcounter{changebargrey}{20} % permet de fixer le niveau de
% gris des barres
et dans le document :
-
\begin{changebar}
texte..
\end{changebar}
ou
-
ancien texte ancien texte ancien texte \cbstart nouveau
texte nouveau texte nouveau texte \cbend ancien texte ancien
texte ancien texte ancien texte
%%%% fin exemple %%%%
6.49 Comment encadrer du texte verbatim ?
Le package 'moreverb' propose un environnement encadré.
- Exemple :
-
-
\begin{boxedverbatim} La commande \LaTeX permet
d'appeler le logo
LaTeX.
\end{boxedverbatim}
%%%% fin exemple %%%%
6.50 Comment écrire du texte en forme de losange ou autre ?
Le package 'shapepar' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/
définit des environnements losange, coeur, etc.
- Exemple :
-
-
\diamondpar{mon paragraphe en forme de losange.}
%%%% fin exemple %%%%
6.51 Comment isoler les flottants par un trait horizontal ?
Pour que les flottants qui sont renvoyés en début (respectivement
en fin) de page soient isolés du texte par un trait horizontal en
dessous (respectivement au-dessus), il faut activer les options suivantes
dans le préambule du document :
-
\let\topfigrule\hrule
\let\botfigrule\hrule
Si leur comportement n'est pas satisfaisant, on peut le redéfinir
:
-
\newcommand{\topfigrule}{%
\vspace*{3pt}\noindent\rule{\linewidth}{0.4pt}\vspace{-3.4pt}}
\newcommand{\botfigrule}{%
\vspace*{3pt}\noindent\rule{\linewidth}{0.4pt}\vspace{-3.4pt}}
6.52 Comment insérer un espace vertical dans une page ?
Il suffit d'utiliser la commande \vspace et de préciser
en argument la hauteur de l'espace voulu.
- Exemple :
-
-
Texte avant.
\vspace{2cm}
Texte après.
%%%% fin exemple %%%%
ce qui donne :
Texte avant.
Texte après.
- Remarque :
- la commande \vspace* force l'insertion
d'un espace vertical même si ce dernier se situe sur un changement
de page.
6.53 Comment insérer un espace horizontal dans un texte ?
De la même manière que pour les espaces verticaux, il existe la commande
\hspace pour insérer un espace horizontal dans un texte.
- Exemple :
-
-
blabla bla \hspace{3cm} bli bli bli
%%%% fin exemple %%%%
ce qui donne :
blabla bla bli bli bli
- Remarque :
- la commande \hspace* force l'insertion
d'un espace même en début ou en fin de ligne.
6.54 Comment définir un style de paragraphe ?
Pour agir de manière globale (sur tout le document), les paramètres
de définition d'un paragraphe sont :
- \parindent pour fixer la longueur des indentations
- \parskip pour gérer l'espace entre les paragraphes.
- Exemple :
-
-
\setlength{\parindent}{1cm}
\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex}
%%%% fin exemple %%%%
Pour forcer (supprimer) localement l'indentation d'un paragraphe,
il existe la commande \(no)indent.
6.55 À quoi sert la commande \stretch ?
La commande \stretch{x} permet d'insérer un espace
élastique qui va s'ajuster de manière à forcer l'occupation de toute
une ligne (en mode horizontal) ou de toute une page (en mode vertical).
Le paramètre x est appelé facteur d'élasticité, il intervient dès
que plusieurs commandes \stretch sont appelées sur
la même ligne.
- Exemples :
-
-
bla\hspace{\stretch{1}} bla bla \hspace{\stretch{2}} bla bla
bla
un texte normal \vspace{\stretch{1}} et un texte qui finit de
remplir la ligne courante et qui se poursuit tout en bas de la
page sur la dernière ligne.
%%%% fin exemple %%%%
ce qui donne :
bla bla bla bla bla bla
un texte normal
et un texte qui finit de
remplir la ligne courante et qui se poursuit tout en bas de la
page sur la dernière ligne.
6.56 Comment justifier un paragraphe à gauche ou à droite ?
Les environnements flushleft et flushright permettent de justifier
à gauche ou à droite une portion de texte.
- Exemple :
-
-
\begin{flushleft}
Texte aligné à gauche. Texte aligné à gauche. Texte aligné à
gauche. Texte aligné à gauche. Texte aligné à gauche. Texte
aligné à gauche. Texte aligné à gauche. Texte aligné à
gauche. Texte aligné à gauche. Texte aligné à gauche. Texte
aligné à gauche.
\end{flushleft}
%%%% fin exemple %%%%
ce qui donne :
Texte aligné à gauche. Texte aligné à gauche. Texte aligné à
gauche. Texte aligné à gauche. Texte aligné à gauche. Texte
aligné à gauche. Texte aligné à gauche. Texte aligné à
gauche. Texte aligné à gauche. Texte aligné à gauche. Texte
aligné à gauche.
Il existe également les commandes \raggedright et \raggedleft.
- Exemple :
-
-
{\raggedleft
Colle à droite. Colle à droite. Colle à droite. Colle à droite.
Colle à droite. Colle à droite. Colle à droite.
Colle à droite. Colle à droite. Colle à droite. Colle à droite. Colle à
droite. Colle à droite. }
%%%% fin exemple %%%%
ce qui donne :
Colle à droite. Colle à droite. Colle à droite. Colle à droite.
Colle à droite. Colle à droite. Colle à droite.
Colle à droite. Colle à droite. Colle à droite. Colle à droite. Colle à droite. Colle à droite.
Le package 'ragged2e' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/ragged2e/
offre en plus des commandes (\Centering, \RaggedLeft,
et \RaggedRight) et des environnements qui permettent
de mieux gérer les césures.
6.57 Comment mettre en page des citations ?
Il existe deux environnements de gestion des citations :
- quote pour les citations courtes,
- quotation pour les citations longues.
- Exemple :
-
-
\begin{quote}
L'environnement \texttt{quote} n'indente pas ces paragraphes
par contre l'espace vertical entre ces derniers est supérieur
à celui d'un texte standard.
La preuve!
\end{quote}
\begin{quotation}
L'environnement \texttt{quotation} indente la première ligne
de ses paragraphes et sépare ses paragraphes d'un espace
vertical standard.
La preuve!
\end{quotation}
Dans les deux cas les marges droite et gauche sont plus
importantes que celles d'un texte standard.
%%%% fin exemple %%%%
ce qui donne :
L'environnement quote n'indente pas ces paragraphes
par contre l'espace vertical entre ces derniers est supérieur
à celui d'un texte standard.
La preuve !
L'environnement quotation indente la première ligne
de ses paragraphes et sépare ses paragraphe d'un espace
vertical standard.
La preuve !
Dans les deux cas les marges droite et gauche sont plus
importante que celles d'un texte standard.
6.58 Comment insérer un texte sans que LATEX le mette en forme ?
L'environnement verbatim permet d'insérer un texte tel quel sans que
LATEX ne le traite. Il permet notamment de faire apparaître des
commandes LATEX.
- Exemple :
-
-
\begin{verbatim}
La commande \LaTeX permet d'imprimer le logo LaTeX.
\end{verbatim}
%%%% fin exemple %%%%
ce qui donne :
Le package 'example' offre un environnement example qui permet en
ne tapant qu'une seule fois le code d'avoir côte à côte le code LATEX
et son résultat après compilation.
Voir à ce sujet le Cahier GUTenberg numéro 16 (février 1994, entièrement
consacré à ce problème) et l'article de M. Goossens et M. Jouhet dans
Cahier GUTenberg 21 (juin 1995, pages 30-52), accessible à l'URL :
http://www.gutenberg.eu.org/publications/.
Voir également la question : Comment griser le fond (background)
d'un paragraphe ?
Les packages 'epic', 'eepic', 'ecltree' permettent de créer des arbres
(les trois packages sont nécessaires pour une utilisation avec Latex2e
pour garder la compatibilité avec Latex2.09).
Il existe l'environnement verse. Il gère les marges, les retours à
la ligne dans une strophe se font par \\
et les strophes sont séparées par des lignes blanches.
Pour associer des remerciements dans chaque chapitre d'un thèse, par
exemple, il faut définir sa propre macro à base de \footnote.
Dans un document recto-verso, pour s'assurer qu'une figure apparaisse
sur la page de gauche et une autre sur la page de droite en face,
il faut utiliser le package 'dpfloat' disponible sur: http://weber.u.washington.edu/~fox/tex/dpfloat.html.
Pour forcer la coupure d'une chaîne de caractères, il faut utiliser
la commande \- à l'endroit où la chaîne doit être coupée.
Je décide que le dernier mot de cette ligne soit coupé en deux ici: documentation. N'est ce pas beau ?
Les deux variables qui définissent respectivement l'espace avant une
légende et l'espace après sont : \abovecaptionskip
et \belowcaptionskip.
Les tableaux permettent de regrouper des information
d'une manière synthétique et facilement compréhensive. LATEX permet
de mettre en page de beau et grand tableau si l'on connait les commandes
de mise en page.
En mode texte, il faut utiliser l'environnement tabular. Chaque colonne
est ensuite décrite par r, l ou c pour obtenir une colonne de texte
justifié à droite, à gauche ou centré. Chaque déclaration de colonne
peut être délimitée par une séparation verticale : | ou rien. Une
ligne horizontale entre deux lignes s'obtient par la commande \hline.
Le contenu de chaque colonne est séparé de celui de la suivante par
le symbole &. Le changement de ligne est obtenu par la commande \\.
Lorsque plusieurs colonnes adjacentes ont la même définition, on peut
grouper leurs déclarations avec la commande *{nb_colonnes}{déclaration}
| r@| r@| r | r|
1
1 |
1 |
1
2 |
4 |
16 |
2
3 |
9 |
81 |
6
4 |
16 |
256 |
24
5 |
25 |
625 |
120
6 |
36 |
1296 |
720
7 |
49 |
2401 |
5040
8 |
64 |
4096 |
40320
9 |
81 |
6561 |
362880
10 |
100 |
10000 |
3628800
11 |
121 |
14641 |
39916800
12 |
144 |
20736 |
479001600
13 |
169 |
28561 |
6.22702080E+9
14 |
196 |
38416 |
8.71782912E+10
15 |
225 |
50625 |
1.30767437E+12
16 |
256 |
65536 |
2.09227899E+13
17 |
289 |
83521 |
3.55687428E+14
18 |
324 |
104976 |
6.40237370E+15
19 |
361 |
130321 |
1.21645100E+17
20 |
400 |
160000 |
2.43290200E+18
1 |
1 |
1 |
1
2 |
4 |
16 |
2
3 |
9 |
81 |
6
4 |
16 |
256 |
24
5 |
25 |
625 |
120
6 |
36 |
1296 |
720
7 |
49 |
2401 |
5040
8 |
64 |
4096 |
40320
9 |
81 |
6561 |
362880
10 |
100 |
10000 |
3628800
11 |
121 |
14641 |
39916800
12 |
144 |
20736 |
479001600
13 |
169 |
28561 |
6.22702080E+9
14 |
196 |
38416 |
8.71782912E+10
15 |
225 |
50625 |
1.30767437E+12
16 |
256 |
65536 |
2.09227899E+13
17 |
289 |
83521 |
3.55687428E+14
18 |
324 |
104976 |
6.40237370E+15
19 |
361 |
130321 |
1.21645100E+17
20 |
400 |
160000 |
2.43290200E+18
1 |
1 |
1 |
1
2 |
4 |
16 |
2
3 |
9 |
81 |
6
4 |
16 |
256 |
24
5 |
25 |
625 |
120
Le package 'longtable', de D. Carlisle, disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/required/tools/,
fonctionne de la même manière mais mieux et permet de définir une
taille de tableau commune sur toutes les pages. Les commandes associées
à ce package sont \endfirsthead, \endhead,
\endfoot et \endlastfoot.
-
\begin{longtable}
{|p{0.2\linewidth}|p{0.2\linewidth}|p{0.2\linewidth}|}
\hline
Premiere colonne & Deuxieme & Troisieme \endfirsthead
\hline
Premiere & Deuxieme & Troisieme \\
\multicolumn{3}{|p{0.6666\linewidth}|}{Suite ... } \\
\endhead
\hline
\multicolumn{3}{|p{0.6666\linewidth}|}{Suite page suivante}
\\ \hline \endfoot \hline
\multicolumn{3}{|p{0.6666\linewidth}|}{C'est fini} \\
\hline
\endlastfoot \hline
1 & 1 & 1 \\
2 & 4 & 16 \\
3 & 9 & 81 \\
1 & 1 & 1 \\
2 & 4 & 16 \\
3 & 9 & 81 \\
1 & 1 & 1 \\
2 & 4 & 16 \\
3 & 9 & 81 \\
1 & 1 & 1 \\
2 & 4 & 16 \\
3 & 9 & 81 \\
\end{longtable}
ce qui donne:
Premiere colonne | Deuxieme | Troisieme |
Premiere | Deuxieme | Troisieme |
Suite ... |
|
Suite page suivante
|
|
C'est fini |
|
1 | 1 | 1 |
2 | 4 | 16 |
3 | 9 | 81 |
1 | 1 | 1 |
2 | 4 | 16 |
3 | 9 | 81 |
1 | 1 | 1 |
2 | 4 | 16 |
3 | 9 | 81 |
1 | 1 | 1 |
2 | 4 | 16 |
3 | 9 | 81 |
|
au lieu de faire des calculs de largeurs de colonne, on peut aussi
mettre un \setlongtables dans le préambule et déclarer
ses tableaux comme à l'habitude en \begin{longtable}{|c|c|c|}
et LATEX se charge du reste. Dans ce cas, l'ajustement des colonnes
peut nécessiter plusieurs (jusqu'à trois) compilations enchaînées.
Le package 'ltxtable' de D. Carlisle, disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/carlisle/
permet de profiter des fonctionnalités de tabularx et de longtable.
7.3 Comment modifier l'orientation d'un tableau ?
On peut utiliser la commande \rotatebox du package
'graphics' de D. Carlisle. Ce package est disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/required/graphics/.
- Exemple :
-
-
\rotatebox{90}{
\begin{tabular}{|c|c|}
\hline
salut & coucou \\
\hline
\end{tabular}
}
%%%% fin exemple %%%%
ce qui donne :
Le style 'lscape' de D. Carlisle marche aussi avec l'environnement
longtable (du même).
De même l'environnement sidewaystable du package 'rotating' permet
d'inclure des tableaux en mode landscape. Le sens de rotation peut
être changé par l'option counterclockwise.
- Exemple :
-
-
\documentclass{report}
\usepackage[counterclockwise]{rotating}
\usepackage{french}
\pagestyle{empty}
\begin{document}
\rotatebox{90}{
\begin{tabular}{|c|c|}
\hline
vu & à voir \\
de Latour & Van Gogh \\
\hline
\end{tabular}
}
\end{document}
%%%% fin exemple %%%%
Le package 'rotfloat' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/rotfloat/
permet de gérer la rotation des flottants.
7.4 Comment nommer un tableau ?
Pour pouvoir associer une légende (\caption) à un tableau,
il suffit de l'encapsuler dans un environnement table.
- Exemple :
-
-
\begin{table}[htbp]
\begin{center}
\begin{tabular}{|c|c|}
\hline
un & deux \\
\hline
trois & quatre \\
\hline
\end{tabular}
\caption{Nom du tableau. \label{table-nom}}
\end{center}
\end{table}
%%%% fin exemple %%%%
ce qui donne :
Table 7.1: Nom du tableau.
7.5 Comment modifier l'épaisseur des lignes d'un tableau ?
Pour obtenir des lignes horizontales fines ou épaisses dans un tableau,
il faut utiliser les commandes
-
\setlength{\doublerulesep}{\arrayrulewidth}
dans l'entête du document puis dans le tableau
-
\\\hline pour une ligne fine
\\\hline\hline pour une ligne épaisse
Autre solution : la macro de A. Kessi (alain.kessi@psi.ch)
-
%%%% debut macro %%%%
\makeatletter
\def\hlinewd#1{%
\noalign{\ifnum0=`}\fi\hrule \@height #1 %
\futurelet\reserved@a\@xhline}
\makeatother
%%%% fin macro %%%%
- Exemple :
-
-
\begin{tabular}{|l|r|} \hline
premier & 1 \\ \hline
second & 2 \\ \hlinewd{5pt}
total & 3 \\ \hline
\end{tabular}
%%%% fin exemple %%%%
Même chose pour les lignes verticales.
-
%%%% debut macro %%%%
\begin{tabular}{@{\,\vrule width 5pt\,}c|c|}
%%%% fin macro %%%%
Le package 'easytable' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/easy/
propose différents styles de lignes de séparation des cellules d'un
tableau.
7.6 Comment griser des cellules d'un tableau ?
Le package 'colortab' disponible par ftp sur ftp://ftp.princeton.edu/pub/tvz/
ou sur ftp://ftp.fdn.org/pub/CTAN/graphics/pstricks/generic/
(accompagné de sa doc dans ftp://ftp.fdn.org/pub/CTAN/graphics/pstricks/origdoc/)
permet de griser ou de mettre en couleur certaines parties de tableau.
- Remarque :
- colortab n'est pas actuellement maintenu par Van Zandt
et l'extension longtable, avec laquelle il était compatible, ne fonctionne
plus.
Il est possible également d'utiliser le package 'shade' disponible
sur {macros/generic/}.
D. Carlisle propose également le package 'colortbl' sur ftp://ftp.fdn.org/pub/CTAN/macros/contrib/supported/carlisle/.
Ce package permet non seulement de gérer de la couleur mais il est
en outre compatible avec le package 'longtable'. Il nécessite les
packages 'array' et 'color'.
- Exemple :
-
-
\begin{tabular}{|>{\columncolor[gray]{.8}}l%
|>{\color{white}\columncolor[gray]{.2}}r|}
\hline
UN & DEUX \\
TROIS & QUATRE \\
\hline
\end{tabular}
%%%% fin exemple %%%%
ce qui donne :
7.7 Comment changer la fonte d'une colonne ?
Pour préciser une fonte spécifique dans une colonne d'un tableau,
on peut utiliser le package 'array'. Ce dernier est disponible sur
ftp://ftp.fdn.org/pub/CTAN/macros/latex/required/tools/.
- Exemple :
-
-
\begin{tabular}{>{\bfseries}l >{\slshape}r c}
gras & penché & normal \\
\end{tabular}
%%%% fin exemple %%%%
ce qui donne :
7.8 Comment créer des notes de bas de page dans un tableau ?
Il suffit d'encapsuler le tableau dans un environnement minipage et
pour supprimer le trait de séparation des notes de bas de page de
déclarer : \
-
renewcommand{\footnoterule}{}.
- Exemple :
-
-
\begin{minipage}[t]{5cm}
\renewcommand{\footnoterule}{} % permet de supprimer le
% trait de séparation
\begin{tabular}{|c|c|}
\hline
Air & Terre\footnote{Feu}\\
\hline
\end{tabular}
\end{minipage}
%%%% fin exemple %%%%
- Remarque :
- dans ce cas, la note apparaît juste après le tableau,
dans l'environnement minipage.
On peut également utiliser :
-
\footnote[cptr]{texte.}
toujours dans un environnement minipage, et gérer soi-même ses compteurs
(cptr est un entier alors que les marques qui apparaîssent dans le
tableau sont les lettres de l'alphabet).
- Remarque :
- ici aussi la note apparaît en dessous du tableau.
Il existe également deux commandes spécifiques \footnotemark[]
et \footnotetext[]{}. \footnotemark
permet de gérer le compteur de notes et \footnotetext
permet d'insérer le texte correspondant en bas de page.
- Exemple :
-
-
\begin{tabular}{|c|c|}
\hline
donnee1\footnotemark[1] & donnee2\footnotemark[2] \\
\hline
\end{tabular}
\footnotetext[1]{Note associ\'ee \`a la donn\'ee 1.}
\footnotetext[2]{Note associ\'ee \`a la donn\'ee 2.}
%%%% fin exemple %%%%
ce qui donnes :
- Remarque :
- ici les notes apparaîssent bien dans le bas de page.
7.9 Comment écrire un texte sur plusieurs colonnes ?
Il faut utiliser la commande :
-
\multicolumn{nb_colonnes}{alignement}{Texte}
- Exemple :
-
-
\begin{tabular}[b]{|l|c|}
\hline
\multicolumn{2}{|c|}{Texte sur 2 colonnes} \\
\hline \hline
donnée1 & donnée2 \\
A & B \\
\hline
\end{tabular}
%%%% fin exemple %%%%
ce qui donne :
Texte sur 2 colonnes |
| donnée1 | donnée2 |
A | B |
- Remarque :
- dans le cas où le nombre de colonnes à couvrir est égal
à 1, cette commande peut être utilisée pour modifier l'alignement
(c, l, r, |, etc) d'une cellule.
7.10 Comment passer certaines cellules en reverse vidéo ?
Le package 'color' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/required/graphics/
permet entre autres de le faire. En fait, il permet de définir des
couleurs de texte et de fond de page.
- Exemples :
-
-
\tabcolsep=30pt
\begin{tabular}{|c|c|c|}
\hline
1&&\\
&\colorbox{black}{\strut{\color{white}Coucou}}&\\
&&2\\
\hline
\end{tabular}
ce qui donne :
ou ()
-
\newlength\Coucoulength
\settowidth\Coucoulength{Coucou Coucou Coucou}
\begin{tabular}{|c|c|c|}
\hline
1&Coucou Coucou Coucou &\\
&\colorbox{black}{\makebox[\Coucoulength][c]{\color{white}Coucou}}
&\\
&&2\\
\hline
\end{tabular}
%%%% fin exemple %%%%
ce qui donne :
7.11 Comment fixer la largeur d'une colonne ?
p{largeur} dans les descripteurs de colonne permet de fixer la largeur
d'une colonne. Dans ce cas par défaut le texte est justifié à gauche.
Les commandes \centering et \raggedright
permettent respectivement de le centrer ou de le justifier à droite.
- Exemple :
-
-
\begin{center}
\begin{tabular}{|c|l|p{4cm}|r|}
\hline
centré & à gauche & largeur fixe & à droite \\
bla bla bla & bla bla bla & bla bla bla & bla bla bla \\
\hline
\end{tabular}
\end{center}
%%%% fin exemple %%%%
ce qui donne :
centré | à gauche | largeur fixe | à droite |
bla bla bla | bla bla bla | bla bla bla | bla bla bla |
Avec le package 'array', disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/required/tools/,
il faut utiliser l'option m{largeur}.
Le package 'easytable' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/easy/
permet facilement d'écrire des tableaux dont les colonnes ont une
largeur fixe.
7.12 Comment écrire un texte sur plusieurs lignes ?
Il existe le package 'multirow' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/misc/.
Il permet d'écrire un texte à cheval sur deux lignes.
- Exemple :
-
-
\begin{table}[htbp]
\begin{center}
\begin{tabular}{|c|c||c|c|}
\hline
\multirow{2}{0.5cm}{k} & \multirow{2}{0.5cm}{$p_G$} &
\multicolumn{2}{c|}{test} \\
\cline{3-4}
& & DADWRD & RARWRD \\
\hline
2 & $1$ & 90 n & 228 n \\
3 & $p_d$ & 202 n & 449 n \\
4 & $p_d2$ & 424 n & 891 n \\
5 & $p_d3$ & 866 n & 1774 n \\
\hline
\end{tabular}
\caption{Nombre d'opération par cellule des tests
pseudo-aléatoires de fautes de type k-coupling.
\label{table-compar}}
\end{center}
\end{table}
%%%% fin exemple %%%%
ce qui donne :
| | test |
| | DADWRD | RARWRD |
2 | 1 | 90 n | 228 n |
3 | pd | 202 n | 449 n |
4 | pd2 | 424 n | 891 n |
5 | pd3 | 866 n | 1774 n |
Table 7.2: Nombre d'opération par cellule des tests pseudo-aléatoires de fautes de type k-coupling.
7.13 Comment diviser une cellule par une diagonale ?
Il faut utiliser le package 'slashbox' disponible par ftp sur ftp://ftp.tohoku.ac.jp/pub/TeX/latex-styles/bear_collections/style-files/.
- Exemple (de la doc) :
-
-
\begin{tabular}{|l||*{5}{c|}}\hline
\backslashbox{Room}{Date}
&\makebox[3em]{5/31}&\makebox[3em]{6/1}&\makebox[3em]{6/2}
&\makebox[3em]{6/3}&\makebox[3em]{6/4}\\\hline\hline
Meeting Room &&&&&\\\hline
Auditorium &&&&&\\\hline
Seminar Room &&&&&\\\hline
\end{tabular}
%%%% fin exemple %%%%
ce qui donne :
|
|
|
|
|
|
| Meeting Room | | | | | |
Auditorium | | | | | |
Seminar Room | | | | | |
7.14 Comment définir une colonne en mode mathématique dans un tableau
?
Avec le package 'array' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/required/tools/,
il suffit de déclarer \begin{tabular}{>{$}c<{$}cc}
pour avoir une colonne en mode mathématique et deux colonnes de texte.
7.15 Comment modifier le nombre de tableaux par page ?
cf. question .
7.16 Comment mettre deux tableaux côte à côte ?
cf. question .
7.17 Comment définir un séparateur de colonne ?
@{symbole} entre deux descripteurs de colonnes permet de définir
"symbole" comme séparateur de colonnes. Cela remplace
|.
- Exemple :
-
-
\begin{tabular}{|l @{\textbf{ est }} l|}
\hline
Le lion & féroce. \\
Le chien & fidèle. \\
\hline
\end{tabular}
%%%% fin exemple %%%%
ce qui donne :
Le lion | est féroce. |
Le chien | est fidèle. |
7.18 Comment obtenir des lignes partielles dans un tableau ?
La commande \cline{ColonneDebut-ColonneFin} est faite
pour ça.
- Exemple :
-
-
\begin{center}
\begin{tabular}{|c|c|c||c|c|c|c|c|c|c||c|}
\hline \hline
a & b & c & d & e & f & g & h & i & j & k \\
\cline{1-4} \cline{6-6} \cline{8-9}
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 \\
\hline
\end{tabular}
\end{center}
%%%% fin exemple %%%%
ce qui donne :
| a | b | c | d | e | f | g | h | i | j | k |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
7.19 Comment éviter que du texte de grande taille n'atteigne le cadre
des cellules ?
Il faut pour cela utiliser la commande \strut qui simule
un objet vertical invisible, après le changement de fonte.
- Exemple :
-
-
\begin{tabular}{|l|}
\hline
{\large HELLO} dfg \\
\hline
\end{tabular}
\begin{tabular}{|l|}
\hline
{\large\strut HELLO} dfg \\
\hline
\end{tabular}
%%%% fin exemple %%%%
ce qui donne :
Il existe l'équivalent mathématique : \mathstrut.
On peut également agrandir la hauteur des lignes avec la commande
\arraystretch :
-
\renewcommand{\arraystretch}{1.5}
7.20 Comment fixer la largeur d'un tableau ?
Le package 'tabularx' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/required/tools/
permet de définir une largeur de tableau.
Le package 'easytable' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/easy/
permet facilement de fixer des largeur de colonnes ou de lignes.
7.21 Comment tracer des traits discontinus ?
Il faut utiliser les packages 'hvdashln' et 'array'.
- Exemple :
-
dans le préambule du document :
-
\usepackage{hvdashln,array}
\setlength{\hdashlinewidth}{.5pt}
\setlength{\hdashlinegap}{2pt}
dans le texte :
-
\[
\left[ \begin{array}{ccc@{}>{\vdashline}c}
a_1 & b_1 & c_1 & d_1 \\
a_2 & b_2 & c_2 & d_2 \\
a_3 & b_3 & c_3 & d_3 \\
a_4 & b_4 & c_4 & d_4
\end{array} \right]
\]
%%%% fin exemple %%%%
7.22 Comment fixer la taille et justifier une colonne ?
Le problème qui se pose lorsqu'on utilise :
-
\begin{tabular}{|>{\raggedright}p{0.33\textwidth}<{}|
>{\raggedleft}p{0.66\textwidth}<{}|}
A& \\
B&C \\
\end{tabular}
vient du fait que \\ est redéfini par
tabular et les commandes ragged. On ne peut donc plus utiliser \\
dans un texte.
Il existe différentes solutions pour pallier ce problème :
- on peut corriger ce problème en incluant les lignes suivantes dans
le préambule du document :
-
\makeatletter
\newtoks\fintableau
\let\fintableau\@arraycr
\makeatother
- avec le package 'array', il suffit d'utiliser la commande \tabularnewline[<vertical
space>] à la place de la commande \\.
- Exemple :
-
-
\begin{tabular}{|r|r|>{\raggedleft}m{190pt}|}
\hline
col1 & col 2 & col3 \tabularnewline
une & deux & trois \\ quatre \tabularnewline
\hline
\end{tabular}
%%%% fin exemple %%%%
ce qui donne :
col1 | col 2 | col3
une | deux | trois |
quatre
|
- on peut également inclure la nouvelle commande suivante dans le préambule
du document :
-
\newcommand\PreserveBackSlash[1]{\let\temp=\\#1\let\\=\temp}
puis en utilisant :
-
\begin{tabular}{|r|r|>{\PreserveBackSlash\raggedleft}m{190pt}|}
7.23 Comment faire une liste de tableaux ?
Il suffit d'inclure la commande \listoftables à l'endroit
où l'on veut inclure cette liste. Sachant que cette liste fait référence
aux pages où apparaissent les tableaux, il faut enchaîner au moins
deux compilations LATEX pour que toutes les références soient exactes.
Chapter 8 Gestion des figures
La gestion des figures est un peu particulière. Les points
suivants décrivent la manière et les trucs pratiques à connaître
pour rendre un document graphiquement agréable.
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 sur ftp://math.uwaterloo.ca/pub/figsInLatex.ps.Z
ou sur ftp://ftp.fdn.org/pub/CTAN/info/figsinltx.ps
De même, K. Reckdahl a écrit "Using EPS Graphics in
Documents". Ce document est disponible sur ftp://ftp.fdn.org/pub/CTAN/info/epslatex.ps.
Sous , il faut utiliser l'un des packages :
- 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 %%%%
- 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}
- 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 apparaîtra 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 ?
Sous , il faut utiliser le package 'graphics' ou 'graphicx'
disponibles sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/required/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 %%%%
LATEX2.09. Pour mettre des figures côte à côte, il suffit d'encapsuler
leur appel dans des minipages.
- Exemples :
-
-
\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 :
-
\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 %%%%
- 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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/psfrag/)
donne cette possibilité. La solution consiste en fait à :
- faire le graphique .ps AVEC des textes et légendes MAIS approximatifs
- utiliser PSfrag pour qu'il remplace les textes approximatifs par des
textes < < LATEX > >
- l'écriture < < par dessus > >
(le remplacement en fait) est fait par PSfrag.
Pour plus de détails, consulter le document "Using EPS Graphics
in documents" disponible sur ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 sur ftp://ftp.lip6.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 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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 (), 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à où 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 ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/float/.
Voir la question pour un exemple d'utilisation de ce package.
De même l'utilisation du caractère ! devant une option de placement
permet de forcer à 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 stockés.
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 ?
On ne peut insérer que des figures de la largeur de la page, et pas
de la lageur d'une colonne, donc des figure* (resp. table*). Un
flottant n'apparaîtra pas sur la page où il est défini, mais, au mieux,
sur la page d'après. Le positionnement [h] n'a donc pas de sens.
- Exemple (avec le package 'graphicx') :
-
-
\begin{figure*}
\includegraphics[width=3cm]{totor.eps}
\end{figure*}
%%%% fin exemple %%%%
- Remarque :
- dans ce cas la gestion de \caption semble
ne pas être correcte.
8.11 Comment faire apparaître toutes les figures en fin de document ?
Le package 'endfloat', disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/endfloat/,
permet de reporter toutes les figures en fin de document.
- 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.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 ).
- Il est également possible d'extraire par copier/coller l'image (.WMF)
et de l'envoyer vers Ghostscript pour Windows, et là-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 a adapté ce package à . Son package s'appelle
'boxedeps'. Ce dernier est disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/generic/boxed/
ou sur ftp://matups.math.u-psud.fr/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{\figurenamethefigure}}
\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 numéroter les figures en fonction des sections ?
On peut déjà remarquer que la numérotation se fait automatiquement
en fonction des chapitres lorsque l'on utilise la classe de document
'book'. Par contre, ce n'est pas le cas lorsque l'on utilise
la classe 'article'. Ainsi, pour obtenir des figures numérotées
1.1, 1.2, 1.3, ... dans la section 1, 2.1, 2.2, 2.3, ... dans la section
2, etc..., il suffit de redéfinir la commande \thefigure
et de remettre le compteur de figures à zéro lorsque l'on change de
section :
-
%%%% debut macro %%%%
\makeatletter
\renewcommand{\thefigure}{\ifnum \c@section>\z@ \thesection.\fi
\@arabic\c@figure}
\@addtoreset{figure}{section}
\makeatother
%%%% fin macro %%%%
- Remarque
- : pour renuméroter les sous-figures de la même manière (avec
le package 'subfigure'), il suffit de rajouter la ligne \let\p@subfigure\thefigure
dans le préambule.
8.17 Comment fondre une image dans du texte ?
Le package 'floatfig', de T. Kneser, disponible sur ftp://ftp.fdn.org/pub/CTAN/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
ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/floatflt/,
a été écrit pour . 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 ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/picinpar/
et sur ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 .
- 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
|
+
|
-
|
+
|
+
| | | |
+
|
+
| | |
Table 8.1: Résultat du test comparatif
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.18 Comment réaliser des diagrammes en bâtons ?
Il existe le package 'bar', disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/misc/,
qui offre un environnement barenv.
8.19 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 :
- ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/nassflow/
- ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/rail/
- ftp://ftp.fdn.org/pub/CTAN/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.20 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.21 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'environnement
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 où 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
Converting PS files to EPS.
ps2epsi, qui est livré avec GhostScript permet de convertir du postscript
en postscript encapsulé.
8.22 Comment changer l'orientation d'une figure ?
Le package 'rotfloat' disponible sur ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/macros/latex/required/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.23 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.24 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.25 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éfini (en général postscript ou encapsulated postscript).
Pour une liste de logiciels, voir la question .
- 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.26 Comment mettre un commentaire à côté d'une figure ?
Pour mettre un commentaire à côté d'une figure et pour que le texte
soit centré 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 %%%%
Chapter 9 Inclusion de fichiers
Il est parfois intéressant de pouvoir inclure un fichier
de texte complet à l'intérieur d'un document LATEX. Par exemple
le code source d'un programme, ou encore un fichier de dessin au format
LATEX.
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 ftp://ftp.fdn.org/pub/CTAN/macros/latex/distribs/
ou ftp://ftp.fdn.org/pub/CTAN/macros/latex/required/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 sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/misc/
ou sur ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 sur ftp://ki-server.informatik.uni-wuerzburg.de/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 ftp://ftp.fdn.org/pub/CTAN/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 commençant 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 sur ftp://iphthf.physik.uni-mainz.de/pub/gv/
- 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 où 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 également modifier certaines variables d'environnement lorsqu'elles
existent.
- Exemple (UNIX tcsh) :
-
-
setenv TEXINPUTS /home/figures/:"$TEXINPUTS"
%%%% fin exemple %%%%
Chapter 10 Hauts et bas de pages
Une jolie mise en page passe par la réalisation des entêtes
et des pieds de pages. On peut y intégrer les numéros de pages, des
informations concernant l'auteur, un renvoi du titre du chapitre ...
bref tout ce qui donne un aspect professionnel à votre document.
10.1 Comment définir les hauts et bas de page ?
- Remarque :
- lorsque le haut ou bas de page défini 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écessaires,
puisque certaines commandes LATEX réinitialisent le style de la
page sur laquelle elles apparaissent.
Le package 'fancyheadings', de P. van Oostrum, est disponible sur
ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/fancyheadings/.
Il est compatible LATEX2.09 et . 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{Première 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 . Il est disponible sur ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/misc/
permet d'étendre la commande footnote à tous les environnements
non flottants.
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'apparaissent 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îtront
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
\footnote 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 noteref{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 subsiste. Ce comportement se justifie par le fait
que certaines commandes comme \tableofcontents ou \chapter
réinitialisent le style de page sur laquelle ils apparaissent.
On peut également redéfinir le style plain à empty \let\ps@plain=\ps@empty.
Le package 'nopageno' de D. Carlisle, disponible sur ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/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 s'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 ftp://ftp.fdn.org/pub/CTAN/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 ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/footmisc/
avec l'option para :
-
\usepackage[para]{footmisc}.
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 ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/footnote/
avec l'option perpage :
-
\usepackage[perpage]{footnote
Le package 'footnpag' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/footnpag/
permet également de faire cela.
10.15 Comment modifier le style des notes de bas de page ?
Le package 'footmisc' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/footmisc/
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}}}
-
\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.
Chapter 11 LATEX, le français et les autres langues
Bien que prévu au départ pour la langue de Shakespeare,
TEX/LATEX permet de rédiger facilement dansnotre belle langue
française.
11.1 Comment franciser un document LATEX ?
'babel' version 3.6 disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/required/babel/,
est un package de J. Braams.
babel permet de composer des documents multilingues. Son appel sous
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 sur ftp://ftp.gutenberg.eu.org/pub/gut/french/
ou sur ftp://ftp.loria.fr/pub/ctan/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).
Vous pouvez également utiliser la série de commandes suivantes, gentiment
envoyées par Denis Barbier:
-
---------- citation ----------
make -f Makefile.unx ALLTEXPATH=/usr/share/texmf \
install-hyphen install-config install-base install-index texhash
Puis modifier le fichier /usr/share/texmf/web2c/fmtutil.cnf et ajouter la ligne ci-dessous:
frlatex tex language.dat -mltex frlatex.ini
Taper ensuite fmtutil --byfmt frlatex texlinks
La commande pour compiler du LaTeX avec french est alors frlatex.
------------- fin -------------
- 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).
AL: A vérifier...
- \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 paraît 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 :
- dernières distributions de french (V4 et post) ne sont
plus compatibles 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 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 ).
Il peut y avoir également un problème de versions, l'algorithme de
coupure des mots a 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
.
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'entrée]{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ébreu 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ébreu
\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 \hyphenation 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
Ce pour quoi LATEX a été écrit : les mathématiques,
c'est un domaine où il excelle.
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 %%%%
ce qui donne :
Résoudre l'équation :
3 + 4 x = 0
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 %%%%
ce qui donne :
Résoudre l'équation :
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 %%%%
ce qui donne :
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
åi=0n ui texte texte texte texte
texte texte texte texte texte texte texte texte texte texte
De même, on peut utiliser
-
$\sum\limits{i=0}n u_i$.
ce qui donne :
åi=0n ui.
Pour écrire des mathématiques sous , 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 . 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/amslatex/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/required/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 :
-
\def\N{\mbox{I\hspace{-.15em}N}}
-
\def\Z{\mbox{Z\hspace{-.3em}Z}}
-
\def\R\mbox{I\hspace{-.15em}R}}
-
\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 () :
-
%%%% 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 , 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 %%%%
ce qui donne :
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 %%%%
ce qui donne :
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
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 %%%%
ce qui donne :
...
- 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_12 x_22 + x_3 \label{E:gp1} \\
x_1 x_3 + x_12 x_32 + x_2 \label{E:gp2} \\
x_1 x_2 x_3 \label{E:gp3}
\end{gather}
\end{subequations}
[...]
Voir le systèmeref{E-gp} et en particulier
l'équationref{E-gp2}.
%%%% fin exemple %%%%
ce qui donne :
x_1 x_2 + x_1^2 x_2^2 + x_3
x_1 x_3 + x_1^2 x_3^2 + x_2
x_1 x_2 x_3
[...]
Voir le système et en particulier l'équation .
- 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) & = & x2 + 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 %%%%
ce qui donne :
f(x) |
= |
x^2 + 8x + 16
|
= |
(x+4)^2
A |
= B + C + D + E + F + G
|
+ H + I
F |
= G + H
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 %%%%
ce qui donne :
2
x |
= y |
|
+ z
x_1 |
= y_1 |
|
+ z_1
5
10a |
= |
3x |
|
3y |
+ |
18z |
|
2w |
6a |
= |
17x |
|
|
+ |
5z |
|
19w |
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 %%%%
ce qui donne :
Le vecteur [( ®) || u]
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 %%%%
ce qui donne :
( [ 1/2] )
{ et }
Résoudre le système :
- 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 %%%%
ce qui donne :
( (x+1) (x-1) ) 2
{{{{
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
- 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.
-
\DeclareMathAlphabet\mbi{OML}{cmm}{b}{it}
-
\DeclareSymbolFont{mathbold}{OML}{cmm}{b}{it}
\DeclareMathSymbol{\biGamma}{\mathord}{mathbold}{0}
- pour des symboles en gras :
-
\boldsymbol{\alpha}
-
\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 , 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 . 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 %%%%
ce qui donne :
Une formule importante :
Une formule moins importante :
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 %%%%
ce qui donne :
Résultats :
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
|
\bigtriangleup
|
\ominus
|
\ominus
|
\times
|
×
|
\uplus
|
\uplus
|
\bigtriangledown
|
\bigtriangledown
|
\otimes
|
Ä
|
\div
|
¸
|
\sqcap
|
\sqcap
|
\triangleleft
|
\triangleleft
|
\oslash
|
Æ
|
\ast
|
*
|
\sqcup
|
\sqcup
|
\triangleright
|
\triangleright
|
\odot
|
\odot
|
\star
|
*
|
\vee
|
Ú
|
\wedge
|
Ù
|
\bigcirc
|
\bigcirc
|
\dagger
|
f
|
\setminus
|
\
|
\amalg
|
\amalg
|
\circ
|
°
|
\ddagger
|
f
|
\cdot
|
·
|
\wr
|
\wr
|
\bullet
|
·
|
\lhd
|
\lhd
|
\rhd
|
\rhd
|
\unlhd
|
\unlhd
|
\unrhd
|
\unrhd
|
- pour les opérateurs de relation :
\leq
|
£
|
\geq
|
³
|
\equiv
|
º
|
\models
|
\models
|
\prec
|
\prec
|
\succ
|
\succ
|
\sim
|
~
|
\perp
|
^
|
\preceq
|
\preceq
|
\succeq
|
\succeq
|
\simeq
|
@
|
\mid
|
|
|
\ll
|
<<
|
\gg
|
>>
|
\asymp
|
\asymp
|
\parallel
|
||
|
\subset
|
Ì
|
\supset
|
É
|
\approx
|
»
|
\bowtie
|
\bowtie
|
\subseteq
|
Í
|
\supseteq
|
Ê
|
\cong
|
@
|
\Join
|
\Join
|
\sqsubset
|
\sqsubset
|
\sqsupset
|
\sqsupset
|
\neq
|
¹
|
\smile
|
\smile
|
\sqsubseteq
|
\sqsubseteq
|
\sqsupseteq
|
\sqsupseteq
|
\doteq
|
\doteq
|
\frown
|
\frown
|
\in
|
Î
|
\ni
|
'
|
\propto
|
µ
| | |
\vdash
|
\vdash
|
\dashv
|
\dashv
| | | | |
- pour les opérateurs fléchés :
\leftarrow
|
¬
|
\longleftarrow
|
¬
|
\uparrow
|
|
\Leftarrow
|
Ü
|
\Longleftarrow
|
Ü
|
\Uparrow
|
Ý
|
\rightarrow
|
®
|
\longrightarrow
|
®
|
\downarrow
|
¯
|
\Rightarrow
|
Þ
|
\Longrightarrow
|
Þ
|
\Downarrow
|
ß
|
\leftrightarrow
|
«
|
\longleftrightarrow
|
«
|
\updownarrow
|
\updownarrow
|
\Leftrightarrow
|
Û
|
\Longleftrightarrow
|
Û
|
\Updownarrow
|
\Updownarrow
|
\mapsto
|
®
|
\longmapsto
|
®
|
\nearrow
|
\nearrow
|
\hookleftarrow
|
\hookleftarrow
|
\hookrightarrow
|
\hookrightarrow
|
\searrow
|
\searrow
|
\leftharpoonup
|
\leftharpoonup
|
\rightharpoonup
|
\rightharpoonup
|
\swarrow
|
\swarrow
|
\leftharpoondown
|
\leftharpoondown
|
\rightharpoondown
|
\rightharpoondown
|
\nwarrow
|
\nwarrow
|
\rightleftharpoons
|
\rightleftharpoons
|
\leadsto
|
\leadsto
| | |
\sum
|
å
|
\bigcap
|
Ç
|
\bigodot
|
\bigodot
|
\prod
|
Õ
|
\bigcup
|
È
|
\bigotimes
|
Ä
|
\coprod
|
\coprod
|
\bigsqcup
|
\bigsqcup
|
\bigoplus
|
Å
|
\int
|
ò
|
\bigvee
|
Ú
|
\biguplus
|
\biguplus
|
\oint
|
(ò)
|
\bigwedge
|
Ù
| | |
\aleph
|
À
|
\prime
|
¢
|
\forall
|
"
|
\infty
|
¥
|
\hbar
|
(h/2p)
|
\emptyset
|
Æ
|
\exists
|
$
|
\Box
|
[¯]
|
\imath
|
i
|
\nabla
|
Ñ
|
\neg
|
Ø
|
\Diamond
|
\Diamond
|
\jmath
|
j
|
\surd
|
Ö
|
\flat
|
\flat
|
\triangle
|
\triangle
|
\ell
|
l
|
\top
|
T
|
\natural
|
\natural
|
\clubsuit
|
§
|
\wp
|
Ã
|
\bot
|
^
|
\sharp
|
\sharp
|
\diamondsuit
|
¨
|
\Re
|
Â
|
\|
|
|
|
\backslash
|
\
|
\heartsuit
|
©
|
\Im
|
Á
|
\angle
|
Ð
|
\partial
|
¶
|
\spadesuit
|
ª
|
\mho
|
\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
|
arccos
|
\cos
|
cos
|
\csc
|
csc
|
\exp
|
exp
|
\arcsin
|
arcsin
|
\cosh
|
cosh
|
\deg
|
deg
|
\gcd
|
gcd
|
\arctan
|
arctan
|
\cot
|
cot
|
\det
|
det
|
\hom
|
hom
|
\arg
|
arg
|
\coth
|
coth
|
\dim
|
dim
|
\inf
|
inf
|
\ker
|
ker
|
\limsup
|
limsup
|
\min
|
min
|
\sinh
|
sinh
|
\lg
|
lg
|
\ln
|
ln
|
\Pr
|
Pr
|
\sup
|
sup
|
\lim
|
lim
|
\log
|
log
|
\sec
|
sec
|
\tan
|
tan
|
\liminf
|
liminf
|
\max
|
max
|
\sin
|
sin
|
\tanh
|
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 , 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 %%%%
ce qui donne :
Pour encadrer cette matrice avec des délimiteurs, cf. paragraphe .
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 %%%%
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 %%%%
ce qui donne :
Il existe également la commande \fbox.
- Remarqu :
- 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 %%%%
ce qui donne :
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}
ds2&\,=\,& \displaystyle{\frac{\epsilon{\prime 2}}{L2}
\frac{12N}{(N+1)(N+2)}}
\end{Beqnarray}
}
%%%% fin exemple %%%%
ce qui donne :
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 %%%%
ce qui donne :
\xrightarrow[au dessus]en dessous
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/required/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 %%%%
ce qui donne :
- 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 'algorithm' 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 libreldots}
\footnotetext[2]{La place occup\' eeldots}
%%%% fin exemple %%%%
ce qui donne :
Placelibre\footnotemark[1] +Placeoccup\acute ee\footnotemark[2] +Placed\acute efaillante = Capacit\acute e |
|
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 %%%%
ce qui donne :
rAB
r AB
r\scriptscriptstyle AB
En utilisant les caractères romans, on peut appliquer la commande
\small.
- Exemple
- :
-
$\rho_{\textrm{\small AB}}$
%%%% fin exemple %%%%
ce qui donne :
rAB
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 %%%%
ce qui donne :
f d = f[^ef] au lieu de : fd = f[^ef] |
|
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 importantref{label-th-AA} est à apprendre par
c\oe{}ur, le théorèmeref{label-th-aaa} peut être utile.
%%%% fin exemple %%%%
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
|
Ö
|
Ö
|
Ö
|
Pas de numérotation d'un théoreme
|
Ö
| |
Ö
|
Position du numéro du théoreme
| |
Ö
|
Ö
|
Style de la numérotation
| | |
Ö
|
Ponctuation après le titre (:,.,etc)
|
Ö
| |
Ö
|
Fonte du titre ou du corps
|
Ö
|
Ö
|
Ö
|
Indentation du titre
|
Ö
| | |
Espace vertical autour du théorème
|
Ö
|
Ö
|
Ö
|
Table 12.1: Tableau récapitulatif des fonctionnalités des packages
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{BA}$$}
{\mathtitre1 $$A+B=C{BA}$$}
{\mathtitre2 $$A+B=C{BA}$$}
{\mathtitre3 $$A+B=C{BA}$$}
{\mathtitre4 $$A+B=C{BA}$$}
{\mathtitre5 $$A+B=C{BA}$$}
\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/required/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 %%%%
ce qui donne :
12.34 Comment ecrire un interieur proprement ?
Pour écrire un intérieur suivant les habitudes mathématiques françaises,
Yannis Haralambous propose un package, ymath, disponible sur le CTAN
dans ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/yhmath.
On y trouve notamment les commandes \ring{}
et \windering{} pour définir un intérieur.
- Exemple :
-
-
\[ > \ring{A}=\widering{\bigcup\limits_{x\in A} \{x\}} > \]
%%%% fin exemple %%%%
On pourra utiliser aussi \wideparen pour étendre ce
genre de notation à d'autre caractères que le rond de l'intérieur.
12.35 Comment obtenir des accolades horizontales ?
\overbrace et \underbrace.
- Exemple :
-
-
\[
\overbrace{f(x)}{=0} + \underbrace{g(y)}_{=0} = 0
\]
%%%% fin exemple %%%%
ce qui donne :
12.36 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 %%%%
ce qui donne :
12.37 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 %%%%
ce qui donne :
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 etre 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/required/tools/
peut également être utilisé dans ce but.
12.38 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.39 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 %%%%
ce qui donne :
en formule :
ou dans le texte [(a)/(6 + Ö2)].
12.40 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 %%%%
ce qui donne :
12.41 Quels sont les délimiteurs disponibles ?
- ( ) [ ] \{ \}
- \uparrow \downarrow \updownarrow
- \Uparrow \Downarrow \Updownarrow
- \lfloor \rfloor \lceil
\rceil
- \langle \rangle
- / \backslash | \|
12.42 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
soit : abgdeezhqJiklmnxpvrrsV tufjcyw
- majuscules :
-
\Gamma \Delta \Theta \Lambda \Xi \Pi \Sigma \Upsilon \Phi \Psi
\Omega
soit : GDQL XPSUFYW
12.43 Quels sont les accents mathématique standards ?
- Il en existe dix pour des lettres seules :
- $\hat{a}$ soit [^a]
- $\check{a}$ soit \checka
- $\breve{a}$ soit \brevea
- $\acute{a}$ soit á
- $\grave{a}$ soit à
- $\tilde{a}$ soit [a\tilde]
- $\bar{a}$ soit [`a]
- $\vec{a}$ soit [a\vec]
- $\dot{a}$ soit [a\dot]
- $\ddot{a}$ soit [a\ddot]
- 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}$ soit [^abc]
- $\widetilde{def}$ soit [def\tilde]
- $\overrightarrow{ghi}$ soit [( ®) || ghi]
- $\overline{jkl}$ soit [`jkl]
- $\underline{mno}$ soit mno
- $\overbrace{pqr}$ soit
|
pqr
|
$\underbrace{stu}$ soit |
stu
|
12.44 Comment superposer deux symboles ?
Il existe pour cela la commande
-
\stackrel{dessus}{dessous}
- Exemple :
-
-
\[
A \stackrel{\theta}{\Rightarrow} B
\]
%%%% fin exemple %%%%
ce qui donne :
12.45 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.46 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.47 Comment tracer un tableau de variations ?
Avec l'environnement array en mode mathématiques (cf. question ).
- 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 %%%%
ce qui donne :
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 %%%%
ce qui donne :
La gestion facile des réferences aux équations, aux tables
et aux figures....
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 tableref{table-add}, pagepageref{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 %%%%
ce qui donne :
Remplir la table 13.1, page pageref
Question | Réponse |
1 + 12 | |
45 + 76 | |
Table 13.1: Additions.
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/required/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 tableref{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/required/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 :
-
-
\documentclass[a4paper,12pt]{book}
\begin{document}
\section{Ma section.\label{ma-sect}}
\end{document}
-
\documentclass[11pt]{report}
\usepackage{xr}
\externaldocument{essai}
\begin{document}
Pour plus de détails, voir le document \textit{essai},
paragrapheref{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.
13.6 Comment faire référence au début d'un flottant et pas au titre?
Lorsque l'on utilise les techniques classiques de références, le \label
fera référence au \caption puisque c'est là
que le compteur est incrémenté. Mais le \caption
est souvent en bas de figure (ou de tableau, ou de tout autre flottant).
Ca ne pose pas de problème pour un document papier, mais pour de l'hypertexte,
il serait plus intéressant d'utiliser la solution proposée par Michel
Bovani :
- Exemple :
-
-
\begin{figure} \refstepcounter{figure}\label{fig-numero13}\addtocounter{figure}{-1}
\includegraphics{Figure13.pdf}
\caption{C'est ma figure.}
\end{figure}
%%%% fin exemple %%%%
Tout savoir pour donner un plan complet de son document.
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<n> 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é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 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 %%%%
Chapter 15 Bibliographie sous LATEX
La plupart des documents scientifiques utilisent les
références bibliographiques. LATEX permet une gestion aisée et
pratique.
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 dans le préambule du document les lignes :
-
\makeatletter
\let\if@openbib\iffalse
\makeatother
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 ).
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 'footmisc' de R. Fairbairns disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/footmisc/.
- Exemple :
-
-
\usepackage[perpage,symbol]{footmisc}
%%%% 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 ). 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/contrib/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
{ " etal." * }
{ " 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/.
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" =
{ " etal." * }
{ " 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{etal.}" *
#0 'namesleft :=
}
'skip$
if$
% fin des ajouts
% ------------------------------
}
while$ % tant qu'il reste des nom à placer
}
%%%% fin macro %%%%
La création d'un index est aussi gèrée par LATEX.
Quelques commandes utiles qui permettent de le faire rapidement.
16.1 Quelles sont les commandes de base ?
Pour permettre à LATEX (via un générateur d'index) de construire
un index, il faut référencer dans le texte tous les mots que l'on
souhaite y voir apparaître. La commande à utiliser pour cela est \index.
Elle permet la construction d'un fichier .idx dans lequel sont répertoriées
toutes les références indiquées dans le texte.
Les entrées de ce fichier sont ensuite triées dans un fichier nom_fichier.ind
via la compilation :
-
makeindex fichier.idx
qui sera inclut dans le source .tex par la commande
-
\printindex
ou
-
\input{nom_fichier.ind}
Pour indiquer à LATEX qu'il doit construire un index, il faut également
ajouter la commande \makeindex dans le préambule du
document.
- Remarque :
- compte tenu du temps pris pour générer un index, il est
conseillé de ne faire apparaître la commande \makeindex
que lors des dernières compilations.
Si les commandes de génération d'index ne sont pas définies par défaut,
ou dans un package autre que makeidx (tel que french de B. Gaulle
par exemple), il faut utiliser le package 'makeidx' (cas notamment
de la commande \printindex).
- Remarque :
- Pour éviter de répéter la commande \index
dans un texte où elle devrait apparaître souvent, on peut utiliser
les commandes \index{mot_a_indexer|(} au début
du texte et \index{mot_a_indexer|)} à la fin.
Pour plus de détails, consulter ftp://ftp.fdn.org/pub/CTAN/indexing/makeindex/doc/makeindex.ps
16.2 Comment construire un index hiérarchique ?
Pour construire un index à plusieurs niveaux d'entrée, il faut utiliser
les commandes suivantes :
-
\index{niveau1}
comme précédemment puis, pour faire apparaître un sous-thème de ce
niveau, on appellera :
-
\index{niveau1!niveau1.1}
- Exemple :
-
-
\documentclass{report}
\usepackage{makeidx}
\usepackage{french}
\pagestyle{empty}
\makeindex
\begin{document}
\chapter{Sports.}
Le sport\index{Sport} c'est fantastique!
Mes sports préférés sont:
\begin{itemize}
\item l'équitation\index{Sport!Equitation} et en particulier
les disciplines de dressage\index{Sport!Equitation!Dressage}
et de complet\index{Sport!Equitation!Complet}:
\item l'escalade\index{Sport!Escalade} et surtout les
sorties en falaise;
\item le judo\index{Sport!Judo}.
\end{itemize}
\printindex
\end{document}
%%%% fin exemple %%%%
Ces fonctions sont disponibles dans le package 'index' ou (exclusif)
'french'.
16.3 Quels sont les générateurs d'index ?
makeindex, pour LATEX sous Unix, Macintosh, MS-DOS ou OS/2 est
disponible sur ftp://ftp.fdn.org/pub/CTAN/indexing/makeindex/,
ftp://ftp.fdn.org/pub/CTAN/systems/mac/macmakeindex.sit et dans
les ditributions emTEX et gTEX.
texindex, fondé sur sed pour LATEX sous Unix, est disponible sur
ftp://ftp.fdn.org/pub/CTAN/support/texindex/.
idxtex, pour LATEX sous VMS, est disponible sur ftp://ftp.fdn.org/pub/CTAN/indexing/glo+idxtex/.
texix pour TEX sur CMS et Macintosh.
16.4 Comment changer le style de certains mots indexés ?
Il faut utiliser la commande :
-
\index{mot_a_indexer@mot_reporte}
- Exemple :
-
-
\documentclass{report}
\usepackage{makeidx}
\usepackage{french}
\pagestyle{empty}
\makeindex
\begin{document}
\chapter{Sports.}
Le sport\index{Sport@\textbf{Sport}} c'est fantastique!
Mes sports préférés sont:
\begin{itemize}
\item l'équitation\index{Sport@\textbf{Sport}!Equitation} et
en particulier les disciplines de
dressage\index{Sport@\textbf{Sport}!Equitation!Dressage} et de
complet\index{Sport@\textbf{Sport}!Equitation!Complet}:
\item l'escalade\index{Sport@\textbf{Sport}!Escalade} et
surtout les sorties en falaise;
\item le judo\index{Sport@\textbf{Sport}!Judo}.
\end{itemize}
\printindex
\end{document}
%%%% fin exemple %%%%
16.5 Comment changer le style des pages de référence ?
Pour mettre en relief certains numéros de référence par rapport à
d'autres, on peut utiliser les macros suivantes :
- pour appeler un numéro de page en gras () :
-
\newcommand{\idb}[1]{\textbf{#1}}
- pour appeler un numéro de page en italique (LATEX2.09) :
-
\newcommand{\idi}[1]{\it{#1}}
- La référence dans le texte se fait alors par :
-
\index{mot_a_indexer|idb}
16.6 Comment rappeler certains mots dans un haut de page ?
Le package 'fancyhdr' () disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/fancyhdr/
permet entre autres de faire apparaître le premier mot de la page
en haut à gauche de la page et le dernier en haut à droite.
16.7 Comment générer plusieurs index ?
Il faut utiliser le package 'index' (et, si nécessaire, charger le
package 'french' après).
Il existe également le package 'multind'.
- Remarque :
- french (3.45) fonctionne bien avec ``multind'', par
contre ``multind'' n'implémente pas toutes les commandes d'index
(notamment, le séparateur ``!'' ne fonctionne pas).
AL: toujours vrai ?
16.8 Qu'est ce que IdXTEX ?
IdXTEX programme écrit en C par R. Aurbach facilite la génération
d'index. Il est disponible sur ftp://ftp.fdn.org/pub/CTAN/indexing/glo+idxtex/.
16.9 Qu'est ce que xindy ?
xindy est un système d'indexation. Il est disponible sur ftp://ftp.fdn.org/pub/CTAN/support/xindy/.
Il est capable de gérer différentes langues suivant différentes lettres
(notamment les lettres accentuées) et règles de tri. Il est paramétrable
en fonction de repères de localisation dans le document qui ne correspondent
pas forcément à un numéro de page ou de paragraphe prédéfini.
Pour plus de détails, consulter : http://www.iti.informatik.th-darmstadt.de/xindy/.
Le glossaire ressemble à l'index. Il est souvent necessaire
de le générer à part du document original.
17.1 Quelles sont les commandes de base ?
La création d'un glossaire avec le package 'french' s'apparente à
la création d'un index. La commande d'insertion d'un mot dans le glossaire
est \glossary, la commande de construction du fichier
.glo est \makeglossary. L'insertion du glossaire dans
le document source se fait par \glossaire et \input{fichier.glo}.
- Exemple :
-
-
\documentclass{report}
\usepackage{french}
\makeglossary
\begin{document}
Construisons un glossaire avec les abréviations suivantes :
PS\glossary{[PS :] Pur Sang}, PSA\glossary{[PSA :] Pur Sang
Arabe}, SF\glossary{[SF :] Selle Français}, PP\glossary{[PP :]
Paso Péruvien}\ldots
\glossaire
\input{fichier.glo}
\end{document}
%%%% fin exemple %%%%
Pour trier un glossaire avec makeindex, il faut utiliser la commande
:
-
(UNIX) makeindex -s style -o fichier.gls fichier.glo
L'appel du glossaire se fait alors par la commande
-
\printglossary.
Remarque : un exemple de style gglo.ist est disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/nomencl/
ou dans http://planck.plmsc.psu.edu/~boris/.
17.2 Quels sont les générateurs de glossaire ?
Le programme ``GloTEX'' de R. Aurbach, utilise une base de
données pour créer un glossaire. Il est donc possible d'utiliser la
même BD pour plusieurs documents, et ainsi d'avoir des glossaires
cohérents (les mêmes termes auront la même définition). GloTEX
est disponible sur ftp://ftp.fdn.org/pub/CTAN/indexing/glo+idxtex/.
L'outil ``GlossTEX'', de V. Yavuz, disponible sur ftp://ftp.fdn.org/pub/CTAN/support/glosstex/
est un générateur de glossaire, de liste d'acronymes ou d'autres listes.
Il s'appuie sur LATEX et MakeIndex. Il combine les fonctionnalités
de GloTEX et nomencl.
La construction du glossaire nécessite les compilations suivantes
:
- latex, glosstex, makeindex et encore latex.
- Exemple :
-
-
\documentclass{article}
\usepackage{glosstex}
\begin{document}
This document is typeset using \LaTeX\glosstex{LaTeX}.
\section*{Glossary}
\printglosstex
\end{document}
%%%% fin exemple %%%%
Pour créer des documents avec un style déjà defini (une
thèse, un rapport technique) est assez aisé avec LATEX. De nombreux
contributeurs ont écrit des paquets qui présente toutes les caractéristiques
et environnements nécéssaires au style choisi.
18.1 Où trouver un style de thèse ?
Le package 'thesis' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/thesis/
est une classe de thèse basée sur la classe report.
Le serveur loria présente quelques exemples de styles de thèses :
http://tex.loria.fr/.
La classe 'thloria' de Denis Roegel (roegel@loria.fr) est disponible
en http://www.loria.fr/~roegel/TeX/TL.html.
Sa documentation peut aussi être trouvée en http://www.loria.fr/tex/guide.html.
Un autre exemple est disponible à l'université de Californie ou sur
ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/ucthesis/.
'utthesis' est le package de l'université du Texas. Il est disponible
sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/utthesis/.
Il existe également le package 'uwthesis' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/uwthesis/
de l'université de Washington.
Une classe de thèse est également disponible par ftp sur ftp://cat.rpi.edu/pub/tibbetts/thesis.zip.
18.2 Comment faire son CV en LATEX ?
Il existe deux packages : 'resume' et 'vita' disponibles sur CTAN.
'vita' se trouve sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/vita/.
Le package 'ESIEEcv' écrit par B. Bayart offre un certain nombre d'environnements
qui facilitent la mise en page type d'un CV. Il est disponible sur
ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/ESIEEcv/.
- Exemple :
-
-
\begin{rubrique}{Titre de la rubrique.}
\begin{sousrubrique}
\Date{deb-fin}
\Duree{longue}
\Lieu{Ca c'est passe ici}
\Titre{Ce que j'ai fait}
\Descr{Quelques details}
\Apport{Ce que cela m'a apporte}
\Apport{et ca aussi}
\end{sousrubrique}
\begin{sousrubrique}
\Competence{Parlote}
\Descr{Bonne maitrise}
\end{sousrubrique}
\end{rubrique}
%%%% fin exemple %%%%
- Remarque :
- la largeur de la première colonne peut être modifiée
par :
-
\setlength{\largeurcolonne}{2.5cm}
Voici quelques macros qui peuvent être utiles :
Dans le préambule :
-
%%%% debut macro %%%%
% Definition des catégories de rubriques.
\newcommand{\categorie}[1]{\vspace*{1cm}\noindent%
{\large\textsl{#1}\par}\vspace*{2pt}\hrule\vspace*{.5cm}}
% On definit une colonne pour les dates
\newlength{\duree}
\settowidth{\duree}{\textbf{1985-1987}}
% La seconde colonnes doit occuper le reste de la page
\setlength{\duree}{-\duree}
\addtolength{\duree}{\textwidth}
% Definition des rubriques.
\newcommand{\rubrique}[2]{\noindent{\textbf{#1\ \ }}%
\parbox[t]{\duree}{#2}}
%%%% fin macro %%%%
Utilisation :
-
\categorie{Formation:}
\rubrique{1990--1992}{Étudiant à l'école Machin. Cette école
propose un programmeldots.
Major de promo.}
\rubrique{1992--1993}{Spécialisation dans le domaineldots.}
\categorie{Expérience:}
\rubrique{1987-1988}{Stage ouvrier dans l'usine de carton de
La Ville aux Cartons.}
On trouvera d'autres macros, de JM Lasgouttes à l'URL suivante :
http://www-rocq.inria.fr/~lasgoutt/lyx/cv-1.5.tar.gz.
Ces macros sont distribuées avec LYX, et donc parfaitement intégrées
à LYX.
18.3 Où trouver un format de publication ?
Des classes et packages de format de publication dans les revues scientifiques
telles que IEEE, IFAC, SIAM, SIGGRAPH, etc, sont disponibles sur CTAN.
Pour plus de renseignements sur les documents IEEE, consulter la page
http://www.ieee.org/pubs/authors.html qui donne des références
de style pour LATEX2.09 et .
La classe paper, disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/paper/,
est dérivée de la classe article. Elle est mieux adaptée pour la publication,
notamment en termes de présentation de la page, le choix des fontes.
Elle définit un certain nombre de macros utiles.
De même, la classe elsart est disponible sur CTAN. Cette classe est
en outre très bien documentée.
* On trouve également une classe pour journaux d'Academic Press,
que l'on peut trouver sur http://www.academicpress.com/www/journal/latex_a.htm.
* Kluwer propose une classe sur http://www.wkap.nl/kaphtml.htm/STYLEFILES
* Annual Reviews (uniquement pour Annual Review of Nuclear and Particle
Science) fait de même sur
http://www.AnnualReviews.org/ibbin/ibGate.exe?LOADPAGE=\%2fARI\%2fauthors\%2fauthors.htm
* American Chemical Society, ne fournit, quant à elle, qu'un "Guidelines"
sur http://pubs.acs.org/instruct/texguide.html
18.4 Où trouver un style de manuel de référence ?
Il existe la classe 'refman' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/refman/.
18.5 Où trouver un style de poster ?
Il existe le package 'poster' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/generic/poster/.
Il permet entre autres d'imprimer un texte s'étalant sur plusieurs
pages avec des parties communes de manière à pouvoir recoller les
morceaux après.
G. Kettl propose également un style de poster accompagné d'une documentation
sur http://rphibm1.physik.uni-regensburg.de/cluster/software/tex/a0poster.html.
18.6 Comment mettre en forme une lettre interne ?
Le package 'newsletr' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/plain/contrib/newsletr/
offre un ensemble de macros pour mettre en page des "newsletter".
Il est destiné à TEX (et pas LATEX). Le résultat est très satisfaisant
(multicolonages, cadres simples, etc).
18.7 Comment créer son propre style ?
Lorsque l'on veut modifier un style prédéfini pour l'adapter à ses
besoins, il est conseillé de créer son propre fichier .cls dans lequel
seront réunies les nouvelles commandes de mise en page.
Ci-dessous un exemple de V. Henn pour définir son propre style d'article
:
-
%%%% debut macro %%%%
%%% A sauver dans MonArticle.cls
%%%
%%% Format de style adapté de article.cls
%%%
%%% V.H. le 13 avril 1995
%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{MonArticle}[1995/06/20 Article personnel]
%%% Chargement de la classe article, avec transfert d'options
\PassOptionsToClass{a4paper}{article} % format a4paper par défaut
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions
\LoadClass{article}
%%% Chargement des Packages les plus courants
\RequirePackage{frbib}
\RequirePackage{general}
\RequirePackage{fuzzy}
\RequirePackage{bigcenter}
\RequirePackage{traffic}
\RequirePackage[dvips]{epsfig}
\RequirePackage{epic}
\RequirePackage{french}
%%% Destination de l'article (proposé pour une conf, une revue...)
\def\Destination#1{\ifx{#1}{}\gdef\@Destination{}%
\else\gdef\@Destination{#1}\fi}
%%% Destination vide par défaut
\Destination{}
%%% Auteur par défaut, pour eviter de recopier a chaque fois
\author{Vincent \fsc{Henn}\thanks{Laboratoire d'ingénierie
circulation--transport, (Unité mixte \lsc{INRETS}--\lsc{ENTPE}),
109, Avenue Salvador Allende, Case 24,
F--69675 \fsc{Bron} Cedex, {\tt henn@inrets.fr}.}}
%%%% fin macro %%%%
Utilisation :
-
\documentclass[a4paper,11pt]{MonArticle}
\title{Exemple d'article}
\Destination{IEEE}
\begin{document}
\maketitle
\chapter{Introduction}
Bla bla
\end{document}
Chapter 19 Création de transparents
La création de transparents est aussi possible, bien
sur le résultat est prévu pour l'impression.
19.1 Quels sont les packages et styles existants ?
La classe 'seminar', de T. van Zandt, offre de nombreuses possibilités
et peu de modifications sont nécessaires pour pouvoir l'utiliser avec
des documents initialement écrits pour ``slide''. seminar est
disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/seminar/inputs/.
- Remarque
- : A l'origine, seminar.sty était un package ; aujourd'hui,
il a évolué en classe.
La lecture du cahier GUTenberg no 16 disponible en ligne à l'URL http://www.gutenberg.eu.org/publications/publis.html
peut être utile. Voir également la page http://tug.cs.umb.edu/applications/
ou http://www.tug.org/applications/Seminar/ qui présente notamment
une FAQ.
Le package 'cours' permet également de réaliser des transparents.
Il permet, à partir d'un fichier source de créer des transparents
et de gérer un syllabus. Cela fonctionne très bien sous LATEX2.09
et (disponible sur les serveurs CTAN).
La classe 'foiltex', de J. Hafner, est pas mal du tout. Elle permet
de définir des entêtes et des pieds de page. Elle a été adaptée à
et est disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/foiltex/.
La classe 'slides' est la classe de document fournie avec LATEX
en remplacement de SliTEX, la solution proposée avec LATEX2.09
et disparue avec lui.
- Exemple :
-
-
\documentclass[a4paper]{slides}
\begin{document}
\begin{slide}
Sous cet environnement slides, le texte est :
\begin{itemize}
\item en gros caractères,
\item d'une fonte sans serif,
\item centré verticalement.
\end{itemize}
\end{slide}
\end{document}
%%%% fin exemple %%%%
19.2 Comment définir un contour pour des transparents ?
Avec le package 'seminar', disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/seminar/.
- Exemple :
-
-
\slideframe[]{oval}
%%%% fin exemple %%%%
Il existe également le package 'fancybox', disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/others/seminar/inputs/,
qui définit des fonctions telles que \shadowbox, \doublebox,
\ovalbox,...
On peut également utiliser une commande \special (cf.
paragraphe ).
- Exemple :
- Cet exemple nécessite dvips et travaille sur un format
a4. Il permet d'obtenir un fond jaune clair avec un cadre noir à 1
cm du bord de la feuille et de définir deux zones de texte en vert.
-
%%%% debut macro %%%%
\special{
!userdict begin /bop-hook {gsave
1 1 0.5 setrgbcolor clippath fill
0 setlinecap 0 setlinejoin 2 setlinewidth 0 setgray
/Times-Bold findfont 10 scalefont setfont newpath
(Maurizio Loreti, 1996-02-25)
dup stringwidth pop neg 510 add 25 moveto
currentpoint 3 -1 roll 0 1 0 setrgbcolor show 0 setgray
moveto -6 3 rmoveto 28 28 28 814 15 arcto
28 814 567 814 15 arcto 79 814 lineto 6 -3 rmoveto
0 1 0 setrgbcolor
(CMS week at CERN)
show 0 setgray 6 3 rmoveto 567 814 567 28 15 arcto
567 28 516 28 15 arcto 516 28 lineto stroke grestore}
def end
}
%%%% fin macro %%%%
%%%% fin exemple %%%%
19.3 Comment inclure des commentaires dans les transparents ?
Dans l'environnement slide, l'environnement note permet de taper du
texte qui sera imprimé sur une page séparée sans être intégré dans
un transparent. Cela permet à l'auteur de taper ses notes personnelles
sans qu'elles apparaissent dans un transparent.
Le package 'xcomment' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/seminar/src/
permet de gérer l'inclusion ou non de certains commentaires.
19.4 Comment modifier l'interligne sous seminar ?
Pour modifier l'espacement entre lignes à l'intérieur des paragraphes
(sous seminar), il faut utiliser le paramètre \slidestretch
(cf. page 9 de la documentation de Seminar).
- Exemple :
-
-
\documentclass[portrait]{seminar}
\begin{document}
\begin{slide*}
Ceci est le texte de la d\'eclaration que j'ai \`a vous
communiquer. Ceci est le texte de la d\'eclaration que j'ai
\`a vous communiquer. Ceci est le texte de la d\'eclaration
que j'ai \`a vous communiquer.
\end{slide*}
\def\slidestretch{0.5}
\begin{slide*}
Ceci est le texte de la d\'eclaration que j'ai \`a vous
communiquer. Ceci est le texte de la d\'eclaration que j'ai
\`a vous communiquer. Ceci est le texte de la d\'eclaration
que j'ai \`a vous communiquer.
\end{slide*}
\end{document}
%%%% fin exemple %%%%
19.5 Comment définir des en-têtes et pieds de pages ?
Le package 'seminar' permet de définir des entêtes et des pieds de
pages.
- Exemple :
-
-
\documentclass{seminar}
\usepackage{french,enumerate}
\newpagestyle{filets}%
{\hrulefill}% en haut
{\hrulefill\tiny\theslide}% en bas
\slidepagestyle{filets}
\begin{document}
\begin{slide}
Voici les résultats de notre société pour les 5 derniers
trimestres :
\begin{enumerate}[Q1]
\item 120 MF
\item 123 MF
\item 145 MF
\item 143 MF
\item 193 MF
\end{enumerate}
\end{slide}
\end{document}
%%%% fin exemple %%%%
19.6 Comment modifier la taille du cadre d'un transparent ?
Sous seminar, pour un changement local, il suffit de préciser les
dimensions voules dans le \begin{slide} ou \begin{slide*}.
Pour un changement global, il faut modifier les variables \slidewidth
et \slideheight.
- Exemple :
-
-
\documentclass[a4,portrait]{seminar}
\usepackage{semcolor}
\begin{document}
% Cadre de la taille par defaut (en A4)
\begin{slide*}
Texte ...
\end{slide*}
% Changement global de la taille du cadre
\addtolength{\slidewidth}{1cm}
\addtolength{\slideheight}{1cm}
\begin{slide*}
Texte...
\end{slide*}
% Changement local de la taille du cadre
% [hauteur,largeur] en mode portrait
% [largeur,hauteur] en mode paysage
\begin{slide*}[15cm,10cm]
Texte
\end{slide*}
% On revient a la taille précédente
\begin{slide*}
Texte...
\end{slide*}
\end{document}
%%%% fin exemple %%%%
19.7 Comment empêcher les figures de flotter ?
On peut forcer l'option par défaut à H :
-
\usepackage{float}
\newfloat{figure}{H}{lof} %Don't let them float by default
\newfloat{table}{H}{lot}
\floatname{figure}{\figurename}
\floatname{table}{\tablename}
19.8 Comment gérer la couleur avec seminar ?
L'exemple suivant montre comment paramétrer la couleur du fond.
- Exemple :
-
-
\documentclass[a4,portrait]{seminar}
\usepackage{semcolor}
\newcommand{\SlideColours}[1]{%
\slideframe[\psset{fillcolor=#1,fillstyle=solid}]{scplain}}
\begin{document}
\SlideColours{blue}
\begin{slide*}
Mon transparent avec un fond bleu.
\end{slide*}
\end{document}
%%%% fin exemple %%%%
Pour utiliser d'autres couleurs que celles prédéfinies (black, blue,
cyan, darkgray, gray, green, lightgray, magenta, red, white, yellow),
il faut le faire via l'une des commandes de PSTricks définissant les
couleurs (dans Seminar, par défaut la couleur est en effet gérée via
PSTricks). PSTricks est disponible sur ftp://ftp.fdn.org/pub/CTAN/graphics/pstricks/.
Néanmoins, aujourd'hui il est conseillé d'utiliser plutôt l'extension
standard 'color' de LATEX pour ce faire.
- Exemple :
-
-
\documentclass[a4,portrait]{seminar}
% Pour utiliser l'extension standard "color" avec Seminar
\usepackage[dvips]{pstcol}
\usepackage{semcolor}
\newcommand{\SlideColours}[1]{%
\slideframe[\psset{fillcolor=#1,fillstyle=solid}]{scplain}}
\definecolor{Bleu}{rgb}{0.,0.,1.}
\definecolor{Rose}{rgb}{1.,0.75,0.8}
\begin{document}
\SlideColours{Bleu}
\begin{slide*}
Mon transparent avec un fond bleu.
\end{slide*}
\SlideColours{Rose}
\begin{slide*}
Mon transparent avec un fond rose.
\end{slide*}
\end{document}
%%%% fin exemple %%%%
On peut également composer un fond dégradé.
- Exemple :
-
-
\documentclass[a4,portrait]{seminar}
% To use the standard "color" package with Seminar
\usepackage[dvips]{pstcol}
\usepackage{semcolor}
\usepackage{gradient}
\definecolor{Gold}{rgb}{1.,0.84,0.}
\slideframe[\psset{fillstyle=gradient,gradbegin=Gold,
gradend=yellow, gradmidpoint=0.5}]{scplain}
\begin{document}
\begin{slide*}
Sympa le dégradé !
\end{slide*}
\end{document}
%%%% fin exemple %%%%
19.9 Comment imprimer des transparents en miroir ?
Pour imprimer en miroir un document (pour faire de la photocomposition),
il existe un prologue PostScript pour DVIPS que voici :
-
%%%% debut macro %%%%
%% A sauver dans miroir.pro
% Pour imprimer des films transparents en miroir
% Pascal PERICHON - Distribution PC-TeXMF 2.6 - (c) 1997
userdict begin
/bop-hook{
210 2.834 mul
0 translate
-1 1 scale
}def end
%%%% fin macro %%%%
Il s'utilise de la façon suivante :
-
dvips -hmiroir.pro
- Remarque :
- N'oubliez pas de mettre ce fichier dans la path HEADERS
de dvips (ou dans un chemin spécifié dans config.ps pour l'inclusion
des en-têtes).
Le package 'mirr' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/generic/TeX-PS/
permet d'obtenir des fichiers miroir.
19.10 Comment inclure une image de fond ?
Le package 'seminar' permet d'inclure une image de fond.
- Exemple :
-
-
\documentclass{seminar}
\usepackage{semcolor}
\usepackage{fancybox}
\usepackage[dvips]{graphicx}
\begin{document}
\newslideframe{IMAGE}%
{\boxput{\rput(1,0){\includegraphics[scale=0.4]{image.eps}}}{#1}}
\slideframe*{IMAGE}
\begin{slide}
My first word.
\end{slide}
\begin{slide}
My last word.
\end{slide}
\end{document}
%%%% fin exemple %%%%
On peut également utiliser l'environnement picture.
- Exemple :
-
-
\setlength{\unitlength}{1in}
\begin{picture}(0,0)
\put(-2.2,-6){\includegraphics[width=\textwidth]{bilder/sigel.eps}}
\end{picture}
%%%% fin exemple %%%%
19.11 Comment imprimer plusieurs transparents par page ?
Pour cela, il existe le package '2up'.
Chapter 20 Lettres, mailing et faxs
Ecrire sa correspondance avec LATEX permet d'obtenir
de jolis documents très professionnels.
20.1 Comment structurer une lettre ?
Il existe pour cela la classe letter. Celle-ci définit les commandes
:
- \address qui définit l'adresse de l'expéditeur placée,
en haut à gauche de la première page si l'on utilise une mise en page
à la française (\usepackage{french} par exemple),
ou en haut à droite dans le cas d'une mise en page anglo-saxonne (solution
par défaut),
- \signature prépare la signature de l'auteur de la lettre.
Celle-ci sera placée en bas à droite de la dernière page de la lettre,
- \la commande \begin{letter} prend
en argument le nom du destinataire,
- les commandes \opening et \closing permettent
respectivement d'ouvrir et de fermer la lettre généralement par des
formules de politesse.
- la commande \makelabels utilisée dans le préambule,
permet de générer une liste des adresses des destinataires pour préparer
un mailing,
- un certain certain nombre d'autres commandes permet de générer des
champs spécifiques tels que : pièces jointes, postscriptum...
De manière générale, le positionnement des différents champs dépend
de la langue utilisée dans la lettre.
- Remarque :
- lorsque plusieurs environnements letter sont utilisés
dans un même source, ils produiront chacun une lettre. Toutes ces
lettres auront la même adresse d'expéditeur et la même signature.
- Exemple :
-
-
\documentclass[11pt]{letter}
\name{expediteur}
\address{adresse \\ de l'expediteur}
\signature{signature \\ de l'expediteur}
\begin{document}
\begin{letter}{le destinataire}
\opening{Cher destinataire,}
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 -- texte -- texte -- texte
-- texte -- texte --
\closing{Formule de politesse}
\ps{PS : j'ai oublie...}
\cc{Monsieur Truc.}
\encl{pieces jointes}
\end{letter}
\end{document}
%%%% fin exemple %%%%
- ATTENTION :
- si l'on ajoute le package 'french' la disposition des
champs utilisés change puisque les lettres anglo-saxones ne respectent
pas la même typographie que les françaises.
La classe 'lettre' de D. Megevand est un outil très bien fait et adaptable
à toutes les situations. Elle est disponible par ftp sur ftp://obsftp.unige.ch/pub/tex/macros/.
- Exemple (D.Mégevand) :
-
-
\documentclass[11pt]{lettre}
\usepackage{french}
\begin{document}
\begin{letter}{Mme Marie-Paule \textsc{Kluth}\\
Alcatel Alsthom Recherche\\
Route de Nozay\\
\textbf{F-91460 Marcoussis}}
\signature{Denis Mégevand}
\def\concname{Objet :}
\conc{FAQ de \TeX}
\vref{A VOUS}
\nref{DE MOI}
\opening{Chère Madame,}
Je vous remercie de citer ma classe lettre dans le \S20.1 de
votre FAQ sur \TeX. Il est exact que l'on peut faire beaucoup de
choses avec cette classe dans le domaine de la correspondance,
notamment des lettres et des télécopies (fax). On peut également
obtenir une page d'étiquettes avec les adresses des destinataires
des lettres contenues dans le document.
Tous les paramètres de mise-en-page, ainsi que les chaînes
"Concerne", "Cc", "PS", etc. peuvent être facilement modifiés.
Cependant, le pointeur vers
html(???)://obswww.unige.ch/pub/tex/macros ne conduit nulle part.
Le pointeur ftp est correct. Pour la doc, il existe une version
en HTML sur http://obswww.unige.ch/Manuels/letdoc2.31.html.
Au \S20.3, vous parlez de classe 'lettre', ce qui est correct,
mais l'exemple donné montre un \verb+\documentstyle+, et les
commandes \verb+\signature+, \verb+\vref+ et \verb+\nref+ ne sont
pas à l'endroit specifié dans la doc. Cet exemple ne compilera
pas, ou plutôt ne donnera pas ce qui est attendu. Voici comme est
structurée cette lettre :
\begin{verbatim}
\documentclass[11pt]{lettre}
[...]
\end{verbatim}
\closing{Meilleures salutations}
\cc{À personne !}
\end{letter}
\end{document}
%%%% fin exemple %%%%
La classe 'fribrief' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/fribrief/
permet également de mettre en page des lettres.
La classe 'akletter' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/akletter/
est une extension de la classe lettre classique. Elle permet notamment
de définir sa propre entête et de gérer la position de l'adresse pour
des enveloppes à fenêtre.
20.2 Comment préparer un mailing ?
Le package 'mailing', disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/mailing/
permet de créer plusieurs documents similaires avec des valeurs définies
dans des bases externes (fichiers ou autres). Il ne fonctionne qu'avec
la classe 'letter'.
Il existe également le package 'envlab', de B. Veytsman (boris@plmsc.psu.edu),
disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supoorted/envlab/.
Il est aujourd'hui aux standards américains mais doit être étendu
à d'autres pays.
Le package 'labels' est également disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/labels/.
- Exemple :
-
-
\documentclass[12pt]{book}
\usepackage{labels}
\LabelCols=3
\LabelRows=11
\LeftBorder=8mm
\RightBorder=4mm
\TopBorder=2mm
\BottomBorder=4mm
%\LabelInfotrue
\begin{document}
%\footnotesize\sf
\numberoflabels=3
\addresslabel[\small\sf]
{Me, Myself \& I\\
SomePlace\\
SomeCompany\\
SomeStreet\\
SomeTown, SomeZip}
\end{document}
%%%% fin exemple %%%%
Le package 'adrlist' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/adrlist/
permet de gérer des listes d'adresses.
Le package 'envbig' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/envbig/
permet d'imprimer des adresses sur des enveloppes.
Le package 'formlett' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/generic/formlett.sty
permet de gérer des mailings.
20.3 Comment faire des références dans une lettre ?
Dans la classe 'lettre' de D. Megevand, il existe les commandes \nref,
pour les références de l'expéditeur et \vref pour celles
du destinataire.
- Exemple :
-
-
\documentclass[11pt]{lettre}
\usepackage{french}
\begin{document}
\begin{letter}{Mme Marie-Paule \textsc{Kluth}}
\signature{MPK}
\vref{A VOUS}
\nref{DE MOI}
\opening{Cher ami,}
Texte....
\closing{Sincèrement.}
\encl{Pièces jointes :}
\cc{copie àTotor}
\end{letter}
\end{document}
%%%% fin exemple %%%%
Le package 'french' offre également les commandes \yourref
et \ourref.
- Exemple :
-
-
\documentclass[a4]{letter}
\usepackage{french}
\signature{ma signature}
\begin{document}
\yourref{mon texte}
\ourref{mon autre texte}
\begin{letter}{le destinataire}
\opening{Cher Monsieur,}
Texte...
\closing{Salutations}
\encl{pieces jointes}
\cc{copie a M. Totor}
\end{letter}
\end{document}
%%%% fin exemple %%%%
20.4 Comment mettre en page un fax ?
Le package 'fax' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/fax/
propose un ensemble de commandes pour préparer un fax.
20.5 Comment positionner une adresse pour une enveloppe à fenêtre ?
La classe scrlettr.cls du package koma-script permet de faire cela.
20.6 Comment suppprimer la date sur une lettre ?
Sous la classe lettre disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/,
il existe la commande \nodate.
20.7 Comment inclure une figure dans une lettre ?
Il faut utiliser le package float et déclarer le type figure :
-
\usepackage{float}
\newfloat{figure}{htbp}{lof}
Les symboles et Logos sont le plus souvent contenus dans
des fontes spéciales. Pour un dessin plus particulier, il est encore
possible de l'écrire à la main par l'intermédaire d'une macro.
21.1 Où trouver des symboles électroniques ?
Le package 'epic' disponible sur CTAN permet d'accéder aux symboles
électroniques.
Il y a également le package 'circ' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/generic/diagrams/circ/
qui fait ça.
AL: incompatible avec french ou pas alors ?
Le package 'circuit_macros' disponible sur ftp://ftp.fdn.org/pub/CTAN/graphics/circuit_macros.tar.gz
permet de définir des circuts électriques à partir d'éléments de base
tels que des amplis, des transistors, et portes logiques ...
21.2 Comment dessiner des circuits électroniques ?
Certains packages sont disponibles sur ftp://ftp.fdn.org/pub/CTAN/graphics/lcircuit/,
ftp://ftp.fdn.org/pub/CTAN/graphics/circuit_macros/ et ftp://ftp.fdn.org/pub/CTAN/macros/generic/diagrams/circ/.
Il existe également des librairies xfig disponibles sur ftp://epb1.lbl.gov/xfig/.
21.3 Quelles sont les polices de symboles sous LATEX ?
Il y en a plusieurs que l'on peut trouver sur ftp://ftp.fdn.org/pub/CTAN/fonts/.
dancers
|
Des petits bonshommes stylisés (dessins d'enfants) qui se trémoussent
dans tous les sens...
|
dingbat
|
Symboles Zapf dingbats
|
bbding
|
Symboles Zapf dingbats
|
goblin
|
On dirait des personnages (étranges) stylisés...
|
hands
|
Des grosses mains pointant vers la gauche ou la droite
|
iching
|
Yi-King. Avec des symboles chinois bizarres...
|
karta
|
Symboles bizarres (voir aussi niceframes.sty)
|
knot
|
noeuds
|
wasy2
|
Symboles
|
Table 21.1: Liste de polices de symboles disponible
21.4 Comment obtenir les symboles mâle et femelle ?
Les polices ``astrosym'', ``cmastro'', ``wasy'' ou ``wasy2''
définissent ces caractères.
Voir également le package 'genealogy' disponible sur ftp://ftp.fdn.org/pub/CTAN/fonts/genealogy/.
21.5 Comment obtenir le symbole degré ?
En fait le symbole ``degré'' ne devrait pas être confondu avec
un < < petit o en exposant > >.
C'est un caractère définit :
- en codage OT1, par \char23
- en codage T1, par \char6
En ,
-
\DeclareTextSymbol{\degre}{T1}{6}
\DeclareTextSymbol{\degre}{OT1}{23}
définiront la commande \degre, que vous travailliez
en codage OT1 (défaut) ou T1 sélectionné par \usepackage[T1]{fontenc}
Le package 'french' définit de cette manière la commande \degre.
Le package 'babel' définit lui \degre et \degres.
Le package 'textcomp', de S. Rahtz, disponible sur ftp://ftp.fdn.org/pub/CTAN/fonts/psfonts/ts1/,
basé sur les fontes DC 1.2 ou plus récentes, disponibles sur ftp://ftp.fdn.org/pub/CTAN/fonts/dc/,
définit les commandes \textdegree et \textcentigrade.
Le package 'inputenc' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/base/
fournit les commandes \textdegree et \mathdegree.
La solution qui consiste à mettre dans le préambule () :
-
\newcommand{\deg}{\ensuremath{circ}}
ou
-
\newcommand{\deg}{\ensuremath{circ}\xspace}
en utilisant le package 'xspace' ou encore
-
\newcommand{\deg}{\(\mathsurround=0pt{}circ\)}
puis utiliser \deg en mode texte ou mathématique, est
donc à éviter.
21.6 Où trouver des symboles astronomiques ?
Il existe le package 'astro' disponible sur ftp://ftp.fdn.org/pub/CTAN/fonts/astro/.
21.7 Où trouver une police de symboles phonétiques ?
Il existe le package 'phonetic' disponible sur ftp://ftp.fdn.org/pub/CTAN/fonts/phonetic/.
La fonte ipa est disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/ipa/.
La fonte tipa de F. Rei est également disponible dans ftp://ftp.fdn.org/pub/CTAN/fonts/tipa/.
Il suffit d'utiliser le package "pifont", de S.
Rhatz et W. Schmidt, disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/required/psnfss
puis de faire \Pisymbol{psy}{210} ou encore
\Pisymbol{psy}{226}.
21.8 Où trouver des opérateurs de logique floue ?
Il existe le package 'logic' disponible sur ftp://ftp.fdn.org/pub/CTAN/fonts/logic/.
V. Henn (henn@inrets.fr) propose ses propres définitions ().
Sauvegarder les commandes suivantes dans un fichier 'fuzzy.sty'. Ce
package nécessite les packages 'amsfonts' et 'xspace'.
- ATTENTION :
- Le fichier ci-dessous est perso, ce qui signifie :
- pas d'exhaustivité
- pas de garantie de solution optimale (en terme de 'pureté teX')
- pas de garantie de non bug
- ces opérateurs ne correspondent pas à une norme pour la notation :
ce sont des choix perso (qui correspondent plus ou moins à l'usage)
-
%%%% debut macro %%%%
%%%
%%% Format de style permettant d'utiliser directement un certain
%%% nombre d'operateurs propres à la logique floue. Ces
%%% opérateurs sont généralement surlignés d'un tilde...
%%%
%%% V.H., le 12 avril 1995
%%%
\RequirePackage{amsfonts}
\RequirePackage{xspace}
\message{Opérateurs flous}
\newcommand{\fmin}{\mathop{\flou{\min }}}
\newcommand{\fmax}{\mathop{\flou{\max }}}
\newcommand{\V}{\mathop{\mathrm V\kern 0pt}}
\newcommand{\ET}{\mathrel{\mathrm{ET}}}
\newcommand{\OU}{\mathrel{\mathrm{OU}}}
\newcommand{\Sim}{\mathop{\mathrm S \kern 0pt}}
\newcommand{\hauteur}{\mathop{\mathrm h\kern 0pt}}
\newcommand{\card}[1]{\| #1 \|}
\newcommand{\flou}[1]{\ensuremath{\widetilde{#1}}}
\newcommand{\R}{\ensuremath{\Bbb{R}}}
\newcommand{\cpp}{\ensuremath{\hbox{C}{++}}\xspace}
\newcommand{\Poss}{\mathop{\Pi}}
%\newcommand{\Nec}{\mathop{{\cal{N}}}}
\newcommand{\Nec}{\mathop{\mathrm N\kern 0pt}}
\newcommand{\poss}{\operatoname{Poss}}
\newcommand{\nec}{\operatoname{Néc}}
\newcommand{\serie}[3]{%
% #1 -> le nom de la variable
% #2 -> l'indice de début
% #3 -> l'indice de fin
\ensuremath{{#1}_{#2},\ldots,{#1}_{#3}}}
\newcommand{\DP}{\fsc{Dubois} et \fsc{Prade}\xspace}
%%%% fin macro %%%%
21.9 Comment obtenir le symbole de paragraphe ?
Il suffit de taper \S.
21.10 Comment obtenir le caractère 'registered' ?
La commande \textregistered est disponible lorsqu'on
utilise une fonte qui le permet (TS1 ou 8r, p. ex. DC).
Le package 'textcomp', de S. Rahtz, disponible sur ftp://ftp.fdn.org/pub/CTAN/fonts/psfonts/ts1/
définit également ce caractère.
Voici d'autres définitions :
-
%%%% debut macro %%%%
\def\Registered{\raisebox{1ex}{\kern-.1em\setbox\@tempboxa\hbox{%
\footnotesize$\bigcirc$}\hbox
to 0pt{\hbox
to\wd\@tempboxa{\hss\tiny\textrm{R}\hss}\hss}\box\@tempboxa\kern-.1
em}}
%%%% fin macro %%%%
de Ulick Stafford (ulick.stafford@nd.edu)
-
%%%% debut macro %%%%
\def\registered{{\ooalign {\hfil\raise .05ex\hbox{\scriptsize
R}\hfil\crcr\mathhexbox20D}}}
%%%% fin macro %%%%
de Maurice Dohmen (m.dohmen@cs.tudelft.nl)
-
%%%% debut macro %%%%
\def\REgistered{{\ooalign
{\hfil\raise.09ex\hbox{\tiny \sf R}\hfil\crcr\mathhexbox20D}}}
%%%% fin macro %%%%
On peut également utiliser le package 'amssymb', de J. Knappen (KNAPPEN@VKPMZD.kph.Uni-Mainz.DE)
qui propose la commande \circledR.
- Exemple :
-
-
\documentclass{article}
\usepackage{amssymb}
\usepackage{autredefs}
\begin{document}
\Registered
\registered
\REgistered
\circledR
\end{document}
%%%% fin exemple %%%%
De Boris A. Veytsman <BAV2@psuvm.psu.edu> :
-
%%%% debut macro %%%%
\newcommand{\reg}{\textsuperscript{\textcircled{\textsc r}}}
%%%% fin macro %%%%
21.11 Où trouver le symbole trade-mark ?
Il suffit d'utiliser le package ``pifont'' puis de faire
-
\Pisymbol{psy}{212}
ou encore
-
\Pisymbol{psy}{228}.
Avec des fontes TS1 (tc livrées avec dc ou ec, ou sinon ps) :
-
\usepackage{textcomp}
\texttrademark
21.12 Comment obtenir un underscore ?
Il suffit de taper \_.
21.13 Où trouver le symbole radioactif ?
Il est disponible dans le package 'karta' disponible sur CTAN.
21.14 Comment obtenir le logo LATEX ?
Il suffit d'appeler la commande \LATEX.
21.15 Comment obtenir le logo ?
Le nouveau logo s'obtient par \LATEXe.
21.16 Où trouver des chiffres entourés ?
Le package 'go' disponible sur ftp://ftp.fdn.org/pub/CTAN/fonts/go/
propose des chiffres blancs sur fond noir.
Le package 'pifont' propose également des chiffres entourés.
A défaut, on peut construire ses propres symboles à l'aide du package
'overlay' ci-dessous.
-
%%%% debut macro %%%%
% Dans TTN Vol3 Num 2 1994, Jeremy Gibbons propose une macro
% \overlay qui permet de créer des symboles en superposant
% d'autres symboles. Le symbole ainsi construit peut changer de
% taille en fonction du style (display, script...)
%
%%% overlay.sty to overlay two symbols, respecting styles
\def\loverlay#1#2{\mathpalette\@overlay{{#1}{#2}{}{\hfil}}}
\def\overlay#1#2{\mathpalette\@overlay{{#1}{#2}{\hfil}{\hfil}}}
\def\roverlay#1#2{\mathpalette\@overlay{{#1}{#2}{\hfil}{}}}
% calls to \@overlay look like
% \overlay\textstyle{{x}{y}{\hfil}{\hfil}}
\def\@overlay#1#2{\@@overlay#1#2}
% strip brackets from 2nd arg, to get
% \@@overlay\textstyle{x}{y}{\hfil}{\hfil}
\def\@@overlay#1#2#3#4#5{{%
\def\overlaystyle{#1}%
\setbox0=\hbox{\m@th$\overlaystyle#2$}%
\setbox1=\hbox{\m@th$\overlaystyle#3$}%
\ifdim \wd0<\wd1 \setbox2=\box1 \setbox1=\box0%
\setbox0=\box2\fi % \box0 is now the wider box
\rlap{\hbox to \wd0{#4\box1\relax#5}}\box0}}
%%% fin du style overlay
%%%% fin macro %%%%
Utilisation :
-
$\overlay{symbole1}{symbole2}$
- Exemple (V. Henn) :
-
-
$ \overlay{\lower.6ex\hbox{$\overlaystyle\smile$}}
{\raise.6ex\hbox{$\overlaystyle
{\roverlay{\circ}{\cdot}}{\roverlay{\circ}{\cdot}}$}}
$
%%%% fin exemple %%%%
21.17 Comment obtenir le symbole numéro ?
Le package 'french' propose la commande \numero.
21.18 Comment obtenir les symboles pourcent et pourmille ?
Le symbole pourcent s'obtient symplement par la commande \%.
Le symbole pourmille est définit dans le package 'textcomp' via la
commande \textperthousand.
- ATTENTION :
- ce package nécessite la disponibilité de fontes ec.
A défaut, on peut construire soit même le symbole :
-
%%%% debut macro %%%%
\newcommand{\promille}{%
\relax\ifmmode\promillezeichen
\else\leavevmode\(\mathsurround=0pt\promillezeichen\)\fi}
\newcommand{\promillezeichen}{%
\kern-.05em%
\raise.5ex\hbox{\the\scriptfont0 0}%
\kern-.15em/\kern-.15em%
\lower.25ex\hbox{\the\scriptfont0 00}}
%%%% fin macro %%%%
Autre solution :
-
%%%% debut macro %%%%
\newcommand{\promille}{%
\def\pourmille{\hbox{$\,0\!/_{00}$}}
%%%% fin macro %%%%
21.19 Comment obtenir un e dans l'o ?
Il faut appeler la commande \oe{}. Les accolades
permettent d'isoler la commande dans un mot.
21.20 Quels sont les symboles réservés dans LATEX ?
Il s'agit des symboles : # $ % & _
\ { }.
Pour les imprimer il faut donc utiliser des commandes à savoir : \#
\$ \% \& \_
\{} \{ \}.
Pour le caractère tilde voir la question , et pour le
backslash, il faut appeler \backslash en mode mathématique.
21.21 Comment obtenir des lettres cursives ?
Il suffit d'utiliser la fonte caligraphique.
- Exemple :
-
-
$\cal{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$
%%%% fin exemple %%%%
ce qui donne :
ABCDEFGHIJKLMNOPQRSTUVWXYZ
21.22 Comment obtenir le logo AMS-(La)TEX ?
Le logo AMS-TEX s'obtiens en appelant \AmS-\TEX
et le logo AMS-LATEX en appelant \AmS-\LATEX.
21.23 Quels sont les symboles par défaut de LATEX ?
Voici une liste des symboles les plus courants :
- \dag, \ddag, soit f,
f
- \S pour paragraphe, soit §
- \P, soit ¶
- \copyright, soit ©
- \pounds pour le symbole de livre, soit £
- \oe, \OE pour e dans l'o, soit
et
- \ae, \AE pour e dans l'a, soit æ
et Æ
- \aa, \AA, soit å et Å
- \o, \O, pour le zéro barré, soit ø
et Ø
- \l, \L pour un l barré, soit et
- \ss pour le double s allemand, soit ß
- ?` pour un ? à l'envers, soit ?`
- !` pour un ! à l'envers soit !`
21.24 Quels sont les différents tirets ?
Il existe effectivement différents tirets sous LATEX :
- la commande - pour un trait d'union -
- la commande - - pour citer un intervalle -
- la commande - - - pour un tiret de ponctuation. -
- Exemple
- :
-
Marie-Paule
voir page 19--32
entre deux thèmes --- par exemple.
%%%% fin exemple %%%%
ce qui donne :
Marie-Paule
voir page 19-32
entre deux thèmes - par exemple.
21.25 Comment obtenir le symbole arobasse ?
Il existe différentes solutions qui doivent être sélectionnées en
fonction de l'endroit où elles sont appelées : dans le texte, dans
un titre dans une note de bas de page, ....
-
%%%% debut macro %%%%
+ \def\at{\string@}
+ \edef\at{\string@}
+ \def\at{\char`@}
+ \chardef\at=`\@
%%%% fin macro %%%%
21.26 Comment obtenir un backslash ?
Il existe différentes techniques :
- $\backslash$ (produit un backslash mathématique)
- \textbackslash
- {\tt\char`\\}
- \verb+\+
on peut également définir une commande :
- \newcommand{\bslash}{\texttt{\symbol{92}}}
- \newcommand{\backslash}{\mbox{\char`\\}}
21.27 Comment faire un carré plain de fin de démonstration ?
Le package 'amssymb' propose la commande \blacksquare.
Voici deux macros proposées par S. Cirilli:
-
%%%% debut macro %%%%
\def\sqw{\hbox{\rlap{\leavevmode\raise.3ex\hbox{$\sqcap$}}$%
\sqcup$}}
\def\sqb{\hbox{\hskip5pt\vrule width4pt height6pt depth1.5pt%
\hskip1pt}}
% Rectangle noir:
\def\qed{\ifmmode\hbox{\hfill\sqb}\else{\ifhmode\unskip\fi%
\nobreak\hfil
\penalty50\hskip1em\null\nobreak\hfil\sqb
\parfillskip=0pt\finalhyphendemerits=0\endgraf}\fi}
% Rectangle blanc:
\def\cqfd{\ifmmode\sqw\else{\ifhmode\unskip\fi\nobreak\hfil
\penalty50\hskip1em\null\nobreak\hfil\sqw
\parfillskip=0pt\finalhyphendemerits=0\endgraf}\fi}
%%%% fin macro %%%%
Même les musiciens ne sont pas oubliés par notre
formatteur de texte préféré. Différents paquets sont disponibles pour
les Mozart en herbes.
22.1 Comment écrire de la musique sous LATEX ?
Le package 'MuTEX', écrit par A. Steinbach et A. Schofer, permet
d'écrire de la musique. Il est disponible par ftp anonyme sur ftp://ftp.cs.ruu.nl/pub/TEX/MuTeX.tar.Z.
Un autre package encore plus performant est 'MusiXTEX' de D. Taupin
(taupin@frups51.bitnet ou taupin@lps.u-psud.fr), R. Mitchell
et A. Egler. Il permet d'écrire des partitions pour orchestres ou
de la musique polyphonique. Il est disponible par ftp anonyme sur
ftp://rsovax.ups.circe.fr/musictex/ ou sur ftp://hprib.lps.u-psud.fr/pub/musixtex/,
ou encore sur ftp://ftp.fdn.org/pub/CTAN/macros/musixtex/taupin/
ou ftp://ftp.fdn.org/pub/CTAN/macros/musixtex/egler/. La lecture
du cahier GUTenberg 21 apporte beaucoup d'informations à ce sujet.
Voir http://www.ens.fr/gut/cahiers.html ou http://www.gutenberg.eu.org/publications/node7.html.
A voir également http://icking-music-archive.sunsite.dk/index.html
le site de W. Icking avec une mine d'informations, en particulier
des pointeurs vers des partitions saisies en musixtex, etc.,
Il existe une FAQ disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/musictex/FAQ/.
- Remarque :
- le programme abc2mtex d'aide à l'utilisation de MusiXteX
peut également être utile, voir http://www.gre.ac.uk/~c.walshaw/abc/
22.2 Comment convertir du midifile en MusicTEX ?
Music TEX, de M. Beigbeder et J.J. Girardot permet la conversion
de midifiles en Music TEX.
midi2tex permet également de traduire des fichiers de données midi.
Il est disponible sur ftp://ftp.fdn.org/pub/CTAN/support/midi2tex/.
22.3 Existe-t'il une liste de discussion de musique ?
l existe une liste de discussion consacrée à l'écriture de musique
en TEX. Pour s'y inscrire, il faut envoyer un mail ``subscribe''
à mutex-request@gmd.de.
Les articles postés sur cette liste sont archivés dans http://www.gmd.de/Mail/mutex-archive/.
Consulter également : http://www.gmd.de/Misc/Music/ ou ftp://ftp.gmd.de/music/.
22.4 Comment éditer un livre de chants ?
Il existe le package 'songbook' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/songbook/.
Voir la page http://www.cyberus.ca/~crath/Misc/Songbook/index.html
pour quelques exemples.
22.5 Comment mettre en page un programme de concert ?
Le package 'concprog' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/concprog/
propose un certain nombre de macros pour préparer un programme de
concert.
Chapter 23 Conversion de fichiers
La portabilité, voici le maître mot de l'informatique
moderne. Pour être portable, il est souvent nécéssaire de convertir
les fichiers.
23.1 Comment générer un fichier .ps à partir d'un .dvi ?
dvips, de T. Rokicki, a l'avantage de savoir gérer les ``virtual
fonts''. Il est disponible par ftp anonyme à :
dvitops, pour unix, msdos, vms et primos, de J. Clark, est disponible
sur ftp://ftp.fdn.org/pub/CTAN/dviware/. dvitops ne gère pas
les fontes virtuelles.
dvipsk, de K. Berry, est disponible sur ftp://ftp.fdn.org/pub/CTAN/dviware/.
23.2 Qu'est ce que le ``Literate Programming'' ?
Le ``Literate Programming'' est une approche de la programmation
qui met en valeur le fait qu'un programme doit pouvoir être lu aussi
bien par une personne que par un compilateur. Les outils associés
(disponibles dans les archives CTAN) vont ainsi permettre de générer
des documents combinant du code source et du texte (souvent au format
TEX). Ensuite, la documentation et le code source seront automatiquement
extraits de ce document unique. Pour plus d'information sur ces techniques,
consulter : http://www.ius.cs.cmu.edu/help/Programming/literate.html.
Il existe également une FAQ comp.programming.literate disponible sur
ftp://ftp.fdn.org/pub/CTAN/help/comp.programming.literate_FAQ.
- Remarque :
- À l'origine, D.E. Knuth a basé TEX sur un système
de ``programmation littéraire'' nommé Web. Le code source en question
était du Pascal. Aujourd'hui où l'on ne trouve quasiment plus de compilateurs
Pascal, il a fallu écrire des outils de passage au C. D'où l'outil
Web2C actuellement utilisé. La plupart des distributions Unix utilisent
Web2c maintenu actuellement par Karl Berry.
- WEB, est le premier outil/langage de literate programming. Il a été
créé par D.E. Knuth, qui l'a d'ailleurs utilisé pour écrire TEX
et metafont. WEB est une surcouche du langage pascal. Il offre un
indexage et des références croisées automatiques pour les identificateurs
et les procédures ainsi qu'un pretty printing du code. Il est disponible
sur ftp://ftp.fdn.org/pub/CTAN/web/tweb/.
- CWEB, de D.E. Knuth et S.Levy, est une réécriture de WEB en C. Cette
application est simple d'accès et marche très bien. Un clône de ce
produit est CWEBx qui est un peu plus riche (donc plus compliqué mais
sans excès). Il est disponible sur ftp://ftp.fdn.org/pub/CTAN/web/c_cpp/cweb/.
- FunnelWEB se présente en tant que surcouche de n'importe quel langage,
mais pour cette raison n'offre pas de ``pretty-printing'' du code.
Il en existe une variante (FunnelWEB-AC) pouvant générer de la doc
HTML, en plus de la doc TEX. Il présente l'originalité par rapport
aux autres d'avoir été réécrit de toutes pièces, et non d'être une
branche de développement séparée de CWEB. Il semble par ailleurs que
FunnelWEB soit le seul à pouvoir donner à l'utilisateur le contrôle
total à l'octet près de son fichier de sortie (utile pour les Makefiles,
par exemple), mais peut paraître assez rigide à un utilisateur habitué
à la puissance de fweb. Funnel WEB, est disponible sur ftp://ftp.fdn.org/pub/CTAN/web/funnelweb.
- fweb (1.53), de J. Krommes, dérivé de CWEB, met à disposition une
FAQ sur http://www.arsc.sunyit.edu/fwebdocs/fweb.html et une
DOC sur http://w3.pppl.gov/~krommes/fweb_toc.html. Cette application
est très complète, mais un peu difficile d'accès. Elle permet notamment
de travailler en fortran (77 ou 90), RATFOR (77 ou 90), C ou C++.
Elle intègre entre autres un système de gestion de macros très complet,
``à la m4'' (boucles, arguments variables, etc.), ainsi qu'un
traducteur de RATFOR en Fortran, pour ceux qui n'auraient pas le compilateur
adéquat... Elle est l'une des rares à utiliser LATEX plutôt que
TEX en standard, ce qui permet d'utiliser toute la puissance de
celui-ci... fweb est disponible sur ftp://ftp.fdn.org/pub/CTAN/web/fweb/.
- noweb et nuweb sont plus légers, plus fiables et très utilisés. Ils
mettent à disposition des mécanismes pour générer des documents LATEX
ou du code source. Ils sont disponibles sur ftp://ftp.fdn.org/pub/CTAN/web/noweb/
et ftp://ftp.fdn.org/pub/CTAN/web/nuweb/. Pour plus de détails,
consulter : http://www.cs.purdue.edu/homes/nr/noweb/.
- SpiderWEB, de N. Ramsey, dérivé de CWEB, est disponible sur ftp://ftp.fdn.org/pub/CTAN/web/spiderweb/.
SpiderWEB permet de gérer la plupart des langages, tant que les blancs
et les tabs ne sont pas critiques, tout en assurant le pretty-printing.
Quelques heures suffisent pour ajouter un nouveau langage, sans avoir
à tout recompiler. Un certain nombre de langages sont supportés dans
la distribution (C, ADA, awk, etc.)
- DOC++ est disponible à : http://www.ZIB-Berlin.DE/VisPar/doc++/doc++.html.
Il se base sur les infos dans les commentaires. Il structure bien
les classes, mais est un peu rigide au niveau des possibilités. Génère
du LATEX ou du HTML.
- wflman est disponible à : ftp://ftp.keck.hawaii.edu/pub/wlupton/wflman-2.1.1.tar.Z
générateur automatique de doc au choix LATEX, RTF, man et HTML.
23.3 Comment convertir du LATEX en word ?
TEXport, de K-Talk permet de convertir vos fichier TEX et LATEX
en documents WordPerfect ou Microsoft Word. Il traite les styles de
fontes, les notes de bas de page, les caractères grecs, les mathématiques,
les tableaux simples, les accents européens, ainsi que les commandes
\def et \renewcommand.
Ce logiciel est payant (et cher). Pour plus de détails, voir : http://www.ktalk.com/.
23.4 Comment convertir du word en LATEX ?
Il y a l'outil ``Publishing Companion'' de K-Talk (voir http://www.ktalk.com/).
Wd2latex, pour MS-DOS, est disponible sur ftp://ftp.fdn.org/pub/CTAN/dviware/wd2latex/.
Cet utilitaire paraît somme toute assez rudimentaire.
Word2x disponible sur ftp://ftp.fdn.org/pub/CTAN/tools/word2x/
permet de convertir du Word 6.0 en texte ou en LATEX.
Voir également texcnven dans http://www.kfa-juelich.de/isr/1/texconv/pctotex.html.
23.5 Comment convertir du scribe en LATEX ?
s2latex, de V. Jacobson, fait partie de la ditribution GUTenberg pour
Unix. Celle-ci est disponible par ftp sur ftp://ftp.gutenberg.eu.org/pub/gut/distribunix/.
23.6 Comment convertir du WordPerfect en LATEX ?
wp2latex, de R.C. Houtepen, est disponible sur ftp://wuarchive.wustl.edu/mirrors/msdos/tex/
et sur ftp://ftp.fdn.org/pub/CTAN/support/wp2latex/. wp2latex
a été écrit pour PC en Turbo Pascal. Il travaille à partir d'un document
WordPerfect5.0. On note quelques limitations concernant les indices,
la table des matières, les marges et les graphiques.
wp2latex, de G. Geers (glenn@qed.physics.su.oz.au), a été écrit
en C. Il devrait être étendu à WordPerfect 5.1. La version la plus
récente est disponible par ftp sur ftp://suphys.physics.su.oz.au/wp2latex/
ou sur ftp://ftp.fdn.org/pub/CTAN/support/wp2latex/glenn/.
texperf est disponible sur ftp://ftp.fdn.org/pub/CTAN/support/texperf/.
23.7 Comment convertir du LATEX en RTF ?
Le format RTF (Rich Text Format) correspond à un format ASCII contenant
des informations de formatage lisibles (entre autres) par Word pour
DOS, Word pour Windows et Word pour Macintosh. Pour plus d'informations
sur ce format, voir :
TEX2RTF, est disponible sur ftp://ftp.fdn.org/pub/CTAN/support/tex2rtf/
ou par ftp sur ftp://ftp.aiai.ed.ac.uk/pub/packages/tex2rtf/.
Il tourne sous SPARC Open Look, SPARC Motif et Windows3.1. TEX2RTF
ne gère pas les formules mathématiques ni les tableaux compliqués.
LATEX2rtf, de F. Dorner et A. Granzer, est disponible sur ftp://ftp.fdn.org/pub/CTAN/support/latex2rtf/.
Il s'appuie sur LATEX 2.09. Une version est également disponible
sur ftp://ftp.lps.u-psud.fr/pub/ltx2rtf/ltx2rtf.zip.
LATEX2rtf produit du RTF avec la simple commande (sous DOS):
-
ltx2rtf srcltx.tex
qui produit
-
srcltx.rtf
- ATTENTION :
-
- Ça ne traite pas toutes les maths mais ça traduit du texte LATEX
pour être relu en Word.
- L'exécutable 386 est fourni mais il y a un makefile qui compile le
tout pour UNIX
- Les lettres accentuées au codage 850 ne sont pas traduites correctement,
utiliser le codage 7bits (\'e, \i,
etc).
- Ça utilise la numérotation automatique pour les sections, les chapitres,
etc. Mais les nombreux bugs que j'ai découverts dans Word 6.0 rendent
la présentation un peu aléatoire.
- Ça traite les < < et les > > pour
les guillemets.
- Ça traite (sauf erreur) les commandes de changements de polices de
du genre \bfseries, \ttfamily,
\sffamily, \slshape et les tailles de
polices.
23.8 Comment convertir du RTF en (La)TEX ?
- rtf2TEX (Unix), de R. Lupton (rhl@astro.princeton.edu), est
disponible sur ftp://ftp.fdn.org/pub/CTAN/support/rtf2tex/.
- rtf2latex (Unix), de E. Wechtl, est disponible sur ftp://ftp.fdn.org/pub/CTAN/support/rtf2latex/.
- w2latex, de J. Garmendia et J.L. Maltret, est disponible sur ftp://ftp.fdn.org/pub/CTAN/support/w2latex/.
w2latex est un outil de conversion entre deux formats descripteurs
de texte, permettant de traduire un document rédigé sous certaines
versions de Word pour obtenir du code LATEX .
- RTFLATEX, de D. Taupin, est capable de transcrire un fichier RTF en
LATEX et de lui associer des fichiers de macros (.sty). Toutefois,
il ne traite pas encore les formules ni les tables. RTFLATEX est disponible
sur ftp://ftp.fdn.org/pub/CTAN/support/rtflatex/ ou par ftp sur ftp://hprib.lps.u-psud.fr/pub/rtflatex/.
- rtf2latex2e (Mac, Unix, Win), d'Ujwal Sathyam, est disponible sur
ftp://ftp.fdn.org/pub/CTAN/support/rtf2latex2e/.
23.9 Comment convertir du Excel en LATEX ?
Le package 'Tabular', de A. Gjestland, est disponible par ftp sur
ftp://ftp.ssh.no/pub/tabular/. Il existe deux versions Tabular4.xla
pour Excel4 et Tabular5.xla pour Excel5. Une documentation est également
disponible : docu-tab.ps.Z. Vous pouvez aussi consulter la page WEB
http://www.ssh.no/~ag/tabular/docu-tab.html. Pour tous renseignements,
contacter l'auteur par e-mail : ag@hsh.no.
Il existe également l'utilitaire Excel2LATEX disponible sur le
WEB à http://www.informatik.uni-trier.de/CIP/marder/xl2latex.zip.
23.10 Comment convertir du HTML en LATEX ?
- Remarque :
- HTML étant à la base du SGML, une autre solution (non
testée) serait d'utiliser un traducteur SGML->LATEX. Le système
'linuxdoc-sgml' devrait pouvoir faire ça si on lui donne la DTD de
la version d'HTML concernée et les règles de traduction. Pour plus
de détails consulter le document disponible sur ftp://ftp.loria.fr/pub/linux/sunsite/utils/text/linuxdoc-sgml-*.tar.gz
23.11 Comment convertir du LATEX en HTML ?
- Remarque :
- IDVI est un outil qui permet de présenter des documents
WWW à partir de sources LATEX. IDVI est une implémentation Java
d'un viewer dvi qui permet d'afficher des pages LATEX sur le WEB
et non plus un document HTML. Pour plus de détails, consulter : http://www.geom.umn.edu/java/idvi/
- Remarque :
- le package 'html' permet d'insérer dans le source LATEX
des commandes traitées de manière spéciale par le convertisseur latex2html.
- ATTENTION :
- cet utilitaire nécessite l'utilisation de
et de emacs.
- A voir également : OmniMark sur http://www.omnimark.com§.
- Il existe également ltx2x disponible sur ftp://ftp.fdn.org/pub/CTAN/support/.
- TEX4ht est un environnement configurable qui permet de générer
des documents hypertextes. Pour plus de détails, voir : http://www.cis.ohio-state.edu/~gurari/TeX4ht/mn.html
- * HeVeA est un programme gratuit destiné à transformer un source
LATEX en HTML 4.0. Ce programme est disponible à l'URL <http://para.inria.fr/~maranget/hevea>
C'est un interpréteur du langage TEX. Donc toutes les nouvelles
macros, tous les environnements que l'on peut définir sont correctement
interprétés, que l'on peut charger des fichiers de style exotiques,
etc. si l'on désire obtenir un résultat particulier dans la sortie
HTML. HeVeA transforme les formules mathématiques en HTML 4.0 « pur
» (sans graphique) en utilisant la fonte symbole, des tags de positionnements
fins et des tables. (Contribution dûe à Éric Brunet)
- ltoh est un script perl paramétrable. Il sait gérer différents types
de macros, les tables, la plupart des caractères spéciaux, etc. Pour
plus de détails, voir : http://www.best.com/~quong/ltoh/
- mn de E. Gurari est un convertisseur plain TEX ou LATEX vers
HTML. Il est hautement configurable. Cet outil est disponible sur :
http://www.cis.ohio-state.edu/~gurari/TeX4ht/mn.html.
- Webbuilder de MicroPress, est un éditeur TEX qui permet de générer
du code HTML. Il gère aussi bien les commandes TEX que les macros
utilisateur. Tous les environnements mathématiques, tables, notes
de bas de page, table des matières, références,listes, etc, sont gérés.
La plupart des documents LATEX peuvent facilement être convertis.
Webbuilder est disponible sous Win95, NT, ou Win 3.1 (Win32s nécessaire).
Pour plus de détails et quelques exemples, consulter : http://www.micropress-inc.com/.
Pour toutes questions écrire à support@micropress-inc.com.
- TTH est un convertisseur TEX to HTML disponible sur : http://hutchinson.belmont.ma.us/tth/.
Il gère les mathématiques (il convertit les formules mathématiques
au lieu d'en faire des images) et reconnaît les structures de document
plain TEX et LATEX qu'il convertit en hyperliens. TTH est rapide
et portable.
- Le package 'typehtml' de D. Carlisle permet de gérer des documents
HTML directement depuis le source LATEX. Ce package est disponible
sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/carlisle/.
23.12 Comment convertir un fichier dvi en ascii ?
dvi2tty est disponible sur ftp://ftp.fdn.org/pub/CTAN/dviware/dvi2tty/.
dvispell de la distribution EmTEX permet également de convertir
un fichier dvi en fichier texte.
23.13 Comment convertir du WEB en LATEX ?
SchemeWEB, de J. Ramsdell, est disponible sur ftp://ftp.fdn.org/pub/CTAN/web/schemeweb/.
23.14 Comment convertir du TEX en Framemaker ?
Framemaker dispose d'un filtre permettant d'importer des fichiers
TEX.
23.15 Comment enlever les balises LATEX d'un document ?
detex, disponible sur ftp://ftp.fdn.org/pub/CTAN/support/detex/,
permet d'enlever toutes les commandes et séquences de contrôle LATEX
d'un document. Il existe sous Unix, Doc et Mac.
- ATTENTION :
- detex n'enlève que les macros, et pas leurs arguments,
ce qui donne des résultats pas toujours très propres avec des documents
LATEX.
23.16 Comment convertir du SGML en (La)TEX ?
- Remarque :
- SGML = Standard Generic Markup Language. SGML est une
norme de balisage de documents structurés
Pour plus de détails, consulter :
sgmlspm, de D. Megginson, (Perl) est disponible à http://www.connection.co.uk/bob/sgml/SGMLSpm/sgmlspl/sgmlspl.html.
stil, de J. Schrod et C. Detig, (Common Lisp) est disponible par ftp
sur ftp://ftp.th-darmstadt.de/pub/text/sgml/stil/.
Ces deux outils s'appuient sur le parser nsgmls de J. Clark qui traduit
du SGML en ESIS.
linuxdoc-sgml s'appuie aussi sur sgmls de J.Clark.
sgml2tex, de P. Flynn, sur PC est disponible sur ftp://ftp.fdn.org/pub/CTAN/support/sgml2tex/.
23.17 Comment convertir du WinWord en LATEX ?
WINW2LTX, de A. Cottrell, est disponible sur ftp://ftp.fdn.org/pub/CTAN/support/winw2ltx/english/ww2/
pour WinWord2, et ftp://ftp.fdn.org/pub/CTAN/support/winw2ltx/english/ww6/
pour WinWord6. Il ne traite ni les équations, ni les graphiques.
23.18 Comment convertir un fichier 8 bits en fichier 7 bits ?
B. Raichle a fourni un tel convertisseur parfaitement portable qui
se présente sous forme d'un programme ``.tex'' appelé convert.tex.
Celui-ci est disponible sur ftp://ftp.fdn.org/pub/CTAN/language/typingtex/.
Il existe également une version modifiée par L. Siebenmann dans /Convert-RaichleHacked.dir/
(interface modifiée, ajout de quelques tables de transformation dont
mac2dek.tbl ou pc2dek pour la conversion du Macintosh ou du PC vers
la syntaxe classique de Knuth \'e, \c{c}
etc.).
L'outil Tower of Babel (avec option TEX activée), permet également
de réaliser de telles conversions. Il est disponible par ftp sur ftp://ftp.lip6.fr/pub/mac/info-mac/text/tower-of-babel-13.hqx.
recode de F. Pinard est un programme unix (GNU) qui convertit tous
types de fichiers texte. De nombreux formats sont supportés (ASCIIs,
EBCDIC, CDC, LATEX, etc).
- Exemple :
-
-
recode latin1:applemac <fichier>
pour une conversion 7 bits vers 8 bits
dans emacs, le package iso-cvt.el, peut convertir automatiquement
un fichier codé 7 bits en fichier codé 8 bits (et réciproquement)
lors de la lecture et de l'écriture. Pour l'utiliser, ajouter (require
iso-cvt) dans .emacs. Le fichier sera alors en 7 bits sur le disque.
De même, il existe le package x-symbol pour (X)emacs. Pour plus de
détails, voir http://brahms.fmi.uni-passau.de/~wedler/x-symbol.html.
Il existe également les utilitaires kb7to8/8to7 distribués avec 'french'.
23.19 Comment convertir un fichier ChiWriter en TEX ?
chi2tex est disponible sur ftp://ftp.fdn.org/pub/CTAN/support/chi2tex/.
Il y a plusieurs versions du convertisseur, selon la version de ChiWriter
à convertir. A partir des versions 2 ou 3 cela ne marchait que pour
des fichiers très simples (pas plus d'un niveau d'exposant et d'indice,
etc). Il est probable que le convertisseur de la version 4 marche
beaucoup mieux : il fait une analyse syntaxique des formules, alors
que les versions 2 et 3 étaient purement graphiques.
23.20 Où trouver une FAQ de convertisseurs (La)TEX/Traitement de texte
?
La FAQ de W. Hennings est disponible sur http://www.kfa-juelich.de/isr/1/texconv.html
ou sur ftp://ftp.fdn.org/pub/CTAN/help/wp-conv/.
Elle est également postée toutes les semaines dans comp.text.tex.
AL: Ceci ne semble plus être le cas...
Voir également la page http://www.wotsit.demon.co.uk/text.htm
ou la page http://wotsit.simware.com/.
23.21 Comment convertir une image en police metafont ?
C'est le programme bm2font qui permet de faire cela. Il est disponible
sur CTAN. La documentation est aussi sur le LATEX Navigator (http://tex.loria.fr/).
Pour plus de détails sur metafont il existe la liste metafont@ens.fr.
Pour s'inscrire, envoyez à
-
listserv@ens.fr
le message :
-
SUBSCRIBE metafont nom de forme libre
23.22 Comment convertir un fichier postscript en ascii ?
pstotext est un outil Unix freeware qui permet d'extraire du texte
ascii d'un fichier postscript. Il utilise Ghostscript. pstotext est
disponible à http://www.research.digital.com/SRC/virtualpaper/pstotext.html.
Sous Windows et OS/2 pstotext est accessible via l'outil GSview de
R Lang (version 2.0 minimum). Voir http://www.cs.wisc.edu/~ghost/gsview/.
Pour DOS, pstotext est disponible à http://www.cs.ruu.nl/~piet/software.html.
23.23 Comment convertir un fichier pdf en ascii ?
L'outil pstotext présenté à la question précédente permet également
d'extraire du texte ascii d'un fichier pdf.
23.24 Comment convertir du LATEX en PDF ?
- Remarque :
- il vaut nettement mieux demander à LATEX de travailler
avec des polices PostScript, si l'on compte transformer le document
en PDF par la suite. Si vous utilisez des polices à résolution fixe,
le texte aura une apparence on ne peut plus laide sur votre écran.
- L'utilitaire ps2pdf de ghostscript (version 4.01 au moins) permet
de convertir des fichiers postscript au format PDF d'Adobe. Ghostscript
version 4.02 est disponible par ftp sur ftp://ftp.cs.wisc.edu/pub/ghost/aladdin/.
Sur mac, ps2pdf livré avec cmactex, nécessite l'installation de psview
disponible par ftp sur ftp://ftp.lip6.fr/pub/mac/local/tex/cmactex/.
- il existe une version préliminaire de PDFTEX (disponible pour faire
des tests). PDFTEX est un moteur tex qui permet de produire directement
un fichier PDF sans passer par DVI. Il dispose donc en natif d'un
support pour les objets graphiques et les liens hypertextes. PDFTEX
est disponible pour WinNT/Win95 par ftp sur ftp://ftp.ese-metz.fr/pub/TeX/private/pdftex/.
- T. Bouche a créé une page w3 de présentation de pdftex avec trois
fichiers pdf créés de cette façon : http://www-fourier.ujf-grenoble.fr/~bouche/PDFtex/.
- Il existe également une liste de discussion à ce sujet : pdftex@tug.cs.umb.edu.
- Adobe Acrobat Distiller permet avec des fontes simples de générer
des fichiers PDF à partir de postscripts. Dans ce cas, il vaut mieux
utiliser des fontes de type1 car les bitmaps de tex sont très très
mal rendus par acrobat reader. Pour plus de détails consulter http://www.adobe.com/.
- Netpbm est un paquet d'utilitaires domaine public permettant des manipulations
d'images, en les convertissant en un format PPM (Portable PixMap),
très facile à manipuler par programmes. Il est disponible pour MSDOS
dans ftp://ftp.lps.u-psud.fr/pub/pc/netpbm/. Une version Win32
(Win95, NT) est également disponible sur tout site CTAN tel que ftp://ftp.fdn.org/pub/CTAN/systems/win32/web2c/.
23.25 Comment définir son propre format de sortie ?
ltx2x disponible sur ftp://ftp.fdn.org/pub/CTAN/support/ltx2x/
permet de remplacer des commandes LATEX par des commandes définies
par l'utilisateur.
Chapter 24 Préviewers et viewers
Les viewers et previewers présentés ci-dessous peuvent
permettre entre autres de visualiser des documents .dvi et .ps. Toutefois,
ils ne sont pas attachés à LATEX.
24.1 Où trouver un previewer ?
Où trouver un viewer ?
Ghostscript, Ghostview et GSview pour PC, Mac et station de travail
sont disponibles sur http://www.cs.wisc.edu/~ghost/index.html.
viewps de T. Kiffe est inclu dans la distribution CMacTEX disponible
sur CTAN.
TrueTEX est un viewer pour PC sous windows.
gv est une interface basée sur Ghostview et améliorée. Les actions
disponibles sont nombreuses et il est possible de lire un document
sur écran. On dispose aussi de l'anti-aliasing et de zooms impressionnants
sur les parties de la page que l'on veut. gv peut même afficher des
fichiers PDF si on dispose de la version de GhostScript adéquate.
Pour plus de détails consulter : http://wwwthep.physik.uni-mainz.de/~plass/gv/
ou un site FTP : ftp://thep.physik.uni-mainz.de/pub/gv/.
gv tourne sur les versions d'Unix les plus courantes, il faut néanmoins
disposer du widget Xaw3d.
24.2 Comment visualiser des fichiers non postscript sous xdvi ?
D. Barbier propose le script suivant pour inclure des fichier MPS
générés pas Metapost.
La démarche retenue est de pomper dans le .ps toutes les définitions
qui manquent à ce pauvre xdvi. Par exemple, pour voir les dessins
dans le fichier essai.tex, je fais :
-
makepro essai.tex
Ce qui génère essai.ps (s'il est vieux) et produit un fichier essai.pro.
Il ne reste plus qu'à mettre \special{header=essai.pro}
avant le \begin{document} et le tour est joué. Quand
on modifie le source (on rajoute des dessins), il suffit de relancer
makepro, et de recompiler le document.
Quelques remarques :
- il faut une version de xdvi >= 20
- on peut sans encombres utiliser plusieurs fois cette commande sur
le même fichier ;
- pour faire le .ps final, il faut enlever \special{header=essai.pro}
et recompiler ;
- s'il y a des problèmes d'échelle, essayer de modifier des paramètres
dans la définition de fshow et fstore.
- je travaille en 600dpi ;
Comme je ne connais pas grand chose en PostScript, toutes les remarques
seront les bienvenues. Par exemple, les paramètres dans fshow et fstore
sont mis au pif. Quelles sont les bonnes valeurs ? Comment faire pour
que Psfrag passe à la moulinette ? Et bien d'autres choses.
-
%%%% debut macro %%%%
#!/bin/sh
# D. Barbier 31/10/97 barbier@cmapx.polytechnique.fr
# Commande : makepro nom_de_fichier
# Usage : voir ci-dessous (ou taper makepro -h)
usage="Usage: `basename $0` nom[.tex]\n\
Cree un preambule \"nom\".pro qui permet l affichage
des fichiers non postscript (inclus par \"nom\") avec
xdvi (version 20 et plus).\n\
Les applications sont notamment l inclusion de fichiers
generes par Metapost."
case "$#:$1" in
1:-h*|1:--h*) echo "$usage"; exit 0;;
1:*) ;;
*) echo "$usage"; exit 1;;
esac
if test -r "$1" ; then
filetex=$1
file=`echo "$filetex" | sed -e 's/\.[.]*$//'`
else
file=$1
filetex=$file.tex
if test ! -r "$filetex" ; then
echo "Erreur: le fichier $file n existe pas"
exit 1
fi
fi
filedvi=$file.dvi
fileps=$file.ps
filepro=$file.pro
rm -f $filepro
# On teste si la commande \special{header=...}
# est dans le fichier
# Autant ne faire qu'une compilation avant de
# voir le resultat
ligne="\\\\special{header=$filepro}"
if test -z "`grep $ligne $filetex`" ; then
echo "Rajouter la comande $ligne avant \\\\begin{document}"
exit 1
fi
echo "%!" > $filepro
# On ne compile le .tex que si necessaire. Il y a
# plusieurs possibilites pour voir la date de modification
# des fichiers :
# 1) utiliser newer fourni avec certaines distributions de TeX
# (je n'ai pas reussi a le faire marcher).
# 2) test (si l'option -nt est supportee)
# 3) creer un makefile.
# J'ai choisi cette derniere solution
echo "$filedvi: $filetex\n\tlatex $filetex\n\
$fileps: $filedvi\n\tdvips -o $fileps $filedvi\n" > .tmp$$
make -f .tmp$$ $fileps
rm -f .tmp$$
awk '
# Liste des preambules qu on veut utiliser
BEGIN {header["tex.pro"]=1;header["texps.pro"]=1}
/%%BeginProcSet:/ { if ( header[$2] == 1 ) {getline
while ( $1 != "%%EndProcSet" ) {print;getline}}}
/%%EndProlog/ {exit 0}
' $fileps |
# On supprime la creation des dictionnaires.
sed -e 's%/TeXDict [[:digit:]]* dict \([[:alpha:]]*\)%%' \
-e 's%/SDict [[:digit:]]* dict \([[:alpha:]]*\)%%' \
> > $filepro
# Ce sont les commandes qui font l affichage.
# En remplacant les commandes de finclude.pro par celles-ci,
# ca a l air de marcher
cat < < EOF > > $filepro
/fstore{TeXDict begin /VResolution 120 def /Resolution 120
def end
dup dict exch{dup 4 2 roll put}repeat def}bind def
/fshow{gsave 72 TeXDict /Resolution get div -72 TeXDict
/VResolution get div scale 1
5 div dup scale get cvx exec show grestore}bind def
EOF
# Et la, ce sont les commandes de fontes
awk '
/TeXDict begin ([[:digit:]]* ){5}/ {i++}
/TeXDict begin ([[:digit:]]* ){5}/,/end/ {if (i==1) print}
/%%EndProlog/ {exit 0}
' $fileps > > $filepro
echo "Fichier $filepro genere"
exit 0
%%%% fin macro %%%%
Chapter 25 Logiciels de dessins
Afin de générer des fichiers graphiques que vous insérerez
dans votre document TEX, différents logiciels sont disponibles.
25.1 Où trouver un logiciel de dessin ?
- Xfig est un logiciel de dessin disponible sur station de travail Unix
sous X Window System. Il permet via des menus de manipuler des objets
de façon interactive dans une fenêtre X Window. Il nécessite une souris
à trois boutons. Il est disponible par ftp anonyme sur ftp://epb1.lbl.gov/xfig
ou sur ftp://ftp.fdn.org/pub/CTAN/graphics/xfig/. Son gros avantage
est de permettre l'utilisation de commandes LATEX (formules mathématiques).
Il est capable d'exporter une figure directement en format TEX
ou de générer de l'encapsulated postscript (si l'on veut des zones
grisées ou des choses de ce type, il faut passer par un fichier postscript).
- PSfrag permet également de combiner du dessin et des textes LATEX.
Il nécessite et le package 'graphics'. Il est disponible
sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/psfrag/.
- TEXcad, permet de créer des fichiers de dessin. Le principe est
intéressant puisque cet outil permet de dessiner à l'aide de la souris
et de menus et lui le transforme en commandes LATEX. Il permet
l'utilisation de la commande \special (cf. paragraphe
). TEXcad est disponible sur PC (il fait partie de la
distribution emTEX) et sous Unix et Linux (on peut le trouver dans
ftp://ftp.fdn.org/pub/CTAN/systems/unix/linux/).
- Xy-pic permet de réaliser des diagrammes commutatifs, des automates,
et plein d'autres choses (cf. paragraphe ).
- xgraphic offre une très bonne qualité de dessin. Il est disponible
à http://blanche.polytechnique.fr/XGRAPHICS/xgraphics.html.
- tgif permet également de dessiner des figures. Il est disponible à
http://bourbon.cs.columbia.edu:8001/tgif/. Il peut faire appel
à différentes librairies (cf. http://bourbon.cs.columbia.edu:8001/tgif/current.html)
dont une LATEX qui permet entre autres de gérer des équations mathématiques.
- LATEXcad sous Windows3.x et Windows '95 permet de convertir des
figures en commandes LATEX. Il est disponible sur ftp://ftp.fdn.org/pub/CTAN/systems/msdos/latexcad/.
- MetaPost que l'on peut trouver dans la distribution CMacTEX peut
produire des figures PostScript. Les commandes MetaPost permettent
entre autres d'obtenir directement des cercles, des segments et des
courbes de Bezier ; en outre, on peut nommer des points en précisant
leurs coordonnées ou en indiquant les chemins à l'intersection desquels
ils se trouvent. MetaPost offre d'autres possibilités, bien décrites
dans le manuel qui l'accompagne. Pour plus de détails, consulter http://www.loria.fr/~roegel/metapost.html.
- Pagedraw sous Windows 3.1/95/NT permet de générer des fichiers postscript.
Il est disponible sur ftp://ftp.fdn.org/pub/CTAN/graphics/pagedraw/.
- Remarque :
- Il y a un excellent éditeur vectoriel GRATUIT sous windows,
nommé MayuraDraw (anciennement PageDraw) et que l'on peut trouver
sous http://www.wix.com/PageDraw/. Avec Ps2ai, cet éditeur permet
d'importer des fichiers ps (presque) quelconques, de les manipuler
et de les exporter au format pdf, eps, wmf, ai, ps, bmp et tif.
- Qfig est un logiciel de dessin sous DOS. Il génère des fichiers PicTEX
et EPIC. Il est disponible sur ftp://ftp.fdn.org/pub/CTAN/support/qfig/.
- PovRay est un outil de ray-tracing. Il permet de manipuler des formes
géométriques, des plans, des textures des sources de lumières, etc.
Consultez http://www.povray.org/.
- Gimp est une application UNIX qui s'appuie sur X Window system. GIMP
permet de manipuler des images pour faire des retouches sur des photos,
des compositions d'images, etc. Pour plus de détails, consultez :
http://www.gimp.org/. A noter, gimp tourne aussi sous Windows.
- Sous Windows 3.1/95/NT il existe également Paint Shop Pro qui est
shareware. Pour plus d'informations, consultez http://www.jasc.com/.
- Le package 'mfpic' de T. E. Leathrum et G. Tobin permet également
de faire des dessins, directement dans le source. Son intérêt est
de rendre le document parfaitement portable sans aucun soucis de compatibilité
de format, ni d'envoi de fichiers multiples. Le source d'un dessin
mfpic doit être compilé par TEX puis MetaFont et TEX à nouveau.
Ce package est très bien adapté pour des dessins mathématiques et
géométriques. Les programmes offrent une complexité remarquable (for
.. upto .., if .. then .. else .., calculs numériques, etc). Le principe
de base du fonctionnement de mfpic est de créer une police de caractère,
dont chaque caractère sera un dessin (d'où la nécessité de la compilation
par Metafont, comme pour toute nouvelle police).
- Remarque (R. Roussillon) :
- Ce package mériterait d'être plus connu
que ce qu'il est actuellement.
- Exemple :
-
-
\polyline{(0,0),(1,2),(3,-1)}
\arc[t]{(1,0),(1,1),(0.5,1)}
%%%% fin exemple %%%%
25.2 Comment inclure des formules Latex dans Xfig ?
Il suffit de mettre le flag special au texte, de taper son texte LATEX
en incluant des commandes, d'exporter son fichier (toto.fig par exemple)
en deux parties : Combined PS/LATEX (PS part) Combined PS/LATEX
(LATEX part) et de faire \input{toto.pstex_t},
en ayant bien sûr chargé au préalable le package 'epsfig' par la commande
\usepackage{epsfig} placée dans le préambule.
On peut utiliser également tgif qui permet d'insérer du LATEX dans
les figures. Son fonctionnement est différent : le source est compilé
dans tgif même, et le résultat dvi est converti en Postscript et apparaît
dans la figure. Le positionnement dans la figure de l'élément compilé
est donc plus aisé, mais il est assez contraignant de lancer LATEX
pour compiler chaque élément.
25.3 Comment gérer différents formats de figures ?
- Sous Unix, Win95, Mac, VMS, l'outil ImageMagick, de J. Cristy, permet
de convertir de nombreux formats d'image vers un autre. Il permet
l'édition et la manipulation d'images. Pour plus de renseignements,
consulter http://www.wizards.dupont.com/cristy/ImageMagick.html.
- ImageMagick est disponible par ftp sur ftp://ftp.wizards.dupont.com/pub/ImageMagick/.
- ImageMagick est également disponible pour VMS par ftp sur ftp://ftp.wizards.dupont.com/pub/ImageMagick/vms/
ou sur ftp://ftp.x.org/contrib/applications/vms/.
- Transfig permet entre autres de convertir un fichier au format fig
en format postscript. Il est disponible sur ftp://ftp.fdn.org/pub/CTAN/graphics/transfig/
ou sur ftp://ftp.x.org/contrib/applications/drawing_tools/transfig.
- GraphicConverter sur mac (en anglais, français ou allemand) est capable
de lire pratiquement tous types de fichiers graphiques de toutes origines
et de le sauvegarder dans un autre format dont EPSF. Le programme
est shareware et est disponible sur info-mac.
- tiff2ps (sous Unix), de S. Leffler, permet de convertir des images
au format tiff en format ps. Disponible sur CTAN: ftp://ftp.fdn.org/pub/CTAN/support/pstools/tiff2ps.
- GWSWIN11 ou Graphic Workshop pour Windows est disponible par ftp sur ftp://hprib.lps.u-psud.fr/pub/pc/utils/.
Cet outil (shareware à $40) permet de convertir du PCX, TIFF, JPEG,
GIF, BMP, etc. Il sait convertir des fichiers à niveaux de gris en
fichier tramés (``dithered'' en anglais) utilisable pour l'impression
sur des imprimantes noir-et-blanc comme nos imprimantes laser. Pour
le tramage, il propose 7 algorithmes et la doc de 60 pages donne des
conseils. Son tramage paraît meilleur que celui d'ImageIn ou des scanners
usuels.
- Paint Shop Pro, outil pour PC, permet d'exporter des fichiers en postscript
qui pourront être appelés directement sous LATEX. Il est disponible
à http://www.jasc.com/index.html en shareware ou par ftp sur
ftp://ftp.lip6.fr/pc/win95/desktop/psp*.zip ou dans ftp://ftp.lip6.fr/pc/simtelnet/win3/Graphics/psp*.zip.
- L'utilitaire gif2eps disponible par ftp sur ftp://ftp.scn.rain.com/pub/graphics/.
- Voir également les pages http://wotsit.simware.com/ ou http://www.wotsit.demon.co.uk/text.htm
pour des informations sur des convertisseurs.
L'orthographe est encore un gros problème dans les documents
dactylographiés. Il n'est pas rares de vois des coquilles dans les
meilleurs bouquins. La correction des mots s'avère donc utile.
26.1 Où trouver un correcteur orthographique ?
- ispell est disponible sur ftp://ftp.fdn.org/pub/CTAN/support/ispell/
ou sur ftp://ftp.lip6.fr/pub/gnu/. Il peut être associé au dictionnaire
français de M. Boyer disponible par ftp sur ftp://ftp.inria.fr/gnu/.
ispell peut être associé à emacs (xemacs), NeXT. Pour plus de renseignements,
consulter http://ficus-www.cs.ucla.edu/ficus-members/geoff/ispell.html.
- Pour MS-DOS :
- Pour Macintosh, Excalibur est disponible sur ftp://ftp.fdn.org/pub/CTAN/systems/mac/support/excalibur/
avec plusieurs dictionnaires. Pour plus de détails, voir : http://www.eg.bucknell.edu/~excalibr/excalibur.html.
- Pour VMS, il existe vmspell disponible sur ftp://ftp.fdn.org/pub/CTAN/support/vmspell/.
- On note également le mode ispell-minor-mode de emacs, qui est capable
de vérifier l'orthographe en ligne sans prendre en compte les commandes
LATEX.
- La distribution Full VTEX [DOS/Win] inclut un correcteur orthographique
(américain, anglais, français, allemand, hollandais et italien). Pour
plus de détails, consulter : http://www.micropress-inc.com/.
- L'éditeur textpad sous Win3.1x et Win95 est capable de supporter des
textes LATEX et comprend de nombreux dictionnaires. Pour plus de
détails, consulter : http://www.textpad.com/.
- Le dictionnaire de R. Cougnenc peut s'utiliser en mode shell sous
DOS comme sous Linux. Il contient 95 000 mots et 39 000 codes postaux,
et permet de vérifier très rapidement une orthographe. Ce dictionnaire
est disponible sur la page web de D. Trystram : http://www.starnet.fr/Homepages/dtrystram/index.html.
26.2 Où trouver un vérificateur de syntaxe LATEX ?
- TEX est un outil puissant disponible par ftp sur http://www.tex.ac.uk/.
- lacheck, disponible avec la distribution AUC-TEX (mode (La)TEX
pour emacs) est capable de vérifier la syntaxe LATEX et de détecter
les erreurs les plus fréquentes.
- Le package 'syntonly' permet également de vérifier la syntaxe LATEX.
- Utilisation :
-
-
\documentclass[syntonly]{...}
- ChkTEX, de J. T. Berger Thielemann (jensthi@ifi.uio.no),
dont la version v1.5 est disponible sur ftp://ftp.fdn.org/pub/CTAN/support/chktex/.
Il est capable de détecter des erreurs typographiques dans LATEX.
Cet outil permet de s'affranchir de certaines constructions LATEX
non intuitives. Les binaires pour UNIX, Amiga, MSDOS et OS/2 sont
disponibles.
Quelques exemples de services :
- pas d'espace ou assimilé après/avant une parenthèse
- indique les espaces multiples qui ne sont pas équivalents à un seul
- gère la ponctuation en mode mathématique
- indique les espaces avant une note de bas de page
- gère les fichiers inclus
- détecte les blancs avant une référence au lieu de
- vérifie les couples de parenthèses
- gère l'espace après un passage en italique
- ...
Cet outil est configurable. Il supporte LATEX209 et .
Le package 'refcheck' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/refcheck/
permet de vérifier les références d'un document.
Qui utilise LATEX, quels sont les organismes qui distribuent
ce logiciel. Un point sur les contacts disponibles dans l'univers
de la typographie numérique.
27.1 Qu'est ce que l'association GUTenberg ?
L'association GUTenberg (loi 1901) a pour objectifs de regrouper les
utilisateurs francophones de TEX, de favoriser les échanges techniques
permettant d'augmenter les possibilités d'impression et de publications
scientifiques et d'offrir à ses adhérents un certain nombre de services
dont des distributions TEX et LATEX francisées. Le serveur d'archives
de GUTenberg est herbergé sur le serveur ftp anonyme : ftp://ftp.gutenberg.eu.org/pub/gut/
ou sur le WEB à http://www.gutenberg.eu.org.
GUTenberg publie la Lettre GUTenberg ainsi que les cahiers GUTenberg.
- Remarque :
- Le cahier 23 de GUTenberg est également une FAQ LATEX.
- ATTENTION :
- la FAQ que vous êtes en train de lire est indépendante
de l'association GUTenberg.
27.2 Qu'est ce que l'association TUG ?
TUG (TEX Users Group) est une organisation internationale dont
un tiers des membres est européen. TUGboat est la lettre de ce groupe.
Pour plus de renseignements, contacter tug@tug.org par mail
ou consulter le site WEB http://www.tug.org/.
27.3 Qu'est ce que l'association AsTEX ?
L'association AsTEX a comme objectif principal d'essayer de faire
du travail utile au plus grand nombre, dans le domaine des logiciels
scientifiques, et d'essayer de faire ce travail aussi bien que les
éditeurs privés, mais dans un esprit de service public.
Cela passe par l'écriture d'utilitaires d'installation et de configuration
automatisés (pour que le débutant en TEX/LATEX n'ait pas à lire
1000 pages de docs disparates, en anglais de surcroît, avant de pouvoir
imprimer ``Bonjour''), par l'écriture de docs raisonnablement
bien rédigées et agréables à consulter, par des distributions sur
disquettes bien présentées. Cela passe également par la traduction
de docs originales dans un français correct, etc.
Les fontes permettent de changer l'apparence des lettres
de votre document. Bien que de nombreuses de fontes soient installées
sur votre système par la distribution de base de LATEX, il peut
être utiled'en ajouter.
28.1 Que signifient les sigles T1, mf, fd etc. ?
Contribution de P. Pichaureau (ppichaur@grannus.u-strasbg.fr) :
Voici une mise au point rapide, histoire que vous compreniez de quoi
ça parle.
En 1990, lors d'une réunion d'utilisateurs de TEX, à Cork, il a
été décidé de développer une table d'encodage particulière pour les
fontes de TEX. Cette table contient des signes diacritiques et
un certains nombre de symboles qui permettent de composer des textes
dans un bon nombre de langues européennes.
Ce codage s'appelle T1 (parfois Cork encoding), et l'ancien codage
de TEX s'appelle OT1 (Old T1). Les autres codages (U, etc.) concernent
des polices particulières et/ou des polices qui ne respectent ni
T1 ni OT1.
Les fontes « standard » de TEX qui respectent ce codage s'appellent
fontes EC (pour european coding, il me semble). Les fontes DC étaient
une pré-version des fontes EC. La phase de mise au point des fontes
EC ayant duré un certain nombre d'années, on s'y perd un peu.
Les fontes TC (text companion) contiennent un certain nombre de caractères
textuels utilisés en mode mathématique. À l'origine, Knuth prenait
ces caractères dans les polices textes normales, mais cela pose des
problèmes si vous essayez d'utiliser d'autres polices de texte. C'est
pour cela qu'on préfère maintenant les mettre à part.
Ça c'est pour les problèmes de codage.
Pour les pk, mf, etc. je refuse de rentrer dans les détails, mais
voici un rapide aperçu de la question :
- fichiers mf -> sources metafont. À partir de là, metafont génère les
fichiers tfm et pk.
- fichiers tfm -> métriques des fontes. Contient la taille des caractères,
les corrections d'espacement éventuelles, etc. TEX a imperativement
besoin de ces fichiers pour compiler un document.
- fichiers pk -> polices au format bitmap. C'est ce qui est utilisé
pour la prévisualisation et l'impression (même en PostScript, et ne
me demandez pas pourquoi !).
- fichiers vf -> vf pour Virtual Font. Les fontes virtuelles ont été
mises au point par Knuth pour vous permettre d'utiliser des fontes
de provenance diverses. Les fichiers vf sont utiles lorsque vous essayez
d'utiliser des fontes PostScript.
- fichiers fd -> description des fontes. Ça, c'est en rapport avec NFSS.
Bon, là, je suis obligé de m'étendre.
NFSS, c'est la manière dont sélectionne une fonte. LATEX
ne le faisait pas assez proprement, alors on a fait le ménage. Un
fichier .fd dit à quels sont les fichiers .mf à utiliser
pour telle police, dans telle taille, dans telle famille, avec telle
variation. C'est avec ce fichier que vous dites à de prendre
la version sans serif dans tel fichier, la taille 9pt dans tel autre,
et le gras dans ce troisième fichier.
En tout état de cause, tfm et fd sont indispensables à la bonne marche
de latex2e. Les mf sont indispensables à la creation des tfm et despk,
et les pk sont indispensables à la visualisation et à l'impression.
28.2 Quels sont les attributs d'une fonte ?
Une fonte possède :
- une famille (family) qui par défaut vaut cmr Autre valeurs : cmtt,
cmss, cmdh, cmfib. La famille correspond à l'allure générale de la
fonte. cmtt pour les fontes « machines à écrire » cmss pour les sans
serifs, cmdh et cmfib pour respectivement les polices dunhill et fibonacci.
- un codage (encoding) qui par défaut vaut OT1 (cf. question )
Autres valeurs : T1, OML, OMS, ...
- une série (series) de valeur m par défaut Les autres valeurs sont
obtenues par une combinaison de deux attributs :
- un poids (qui correspond à la graisse de la fonte) : ul (ultral),
el (extral), l (light), sl (semil), sb (semib), b (bold), eb (extrab),
ub (ultrab),
- une largeur : uc (ultrac), ec (extrac), c (condensed), sc (semic),
m (medium), sx (semix), x (expanded), ex (extrax), ux (ultrax).
- une forme (shape) dont la valeur par défaut est n Autres valeurs :
n, it, sl, sc, ui, ol. La forme correspond aux différents variations
de la fonte : n pour normal, it pour italique, sl pour penché (slanted),
sc pour les petites capitales (small capital).
- une taille (size) qui vaut par défaut 10pt. Lorsque deux valeurs sont
précisées, la première correspond effectivement à la taille de la
fonte et la seconde généralement supérieure correspond aa la taille
de l'interligne.
28.3 Comment utiliser une fonte ?
Pour déclarer une fonte par défaut dans un document, il existe les
commandes \familydefault, \encodingdefault,
\seriesdefault et \shapedefault.
- Exemple :
-
-
\documentclass{report}
\usepackage{french}
\pagestyle{empty}
\renewcommand{\familydefault}{cmtt}
\begin{document}
\begin{verbatim}
\renewcommand{\familydefault}{cmtt}
\end{verbatim}
dans le préambule d'un document permet de sélectionner la fonte
computer moderne de type machine à écrire pour tout le corps du
document.
\end{document}
%%%% fin exemple %%%%
En , un certain nombre de packages permettent de faire appel
à une fonte particulière.
- Exemple :
-
-
\documentclass{report}
\usepackage{french}
\pagestyle{empty}
\usepackage{times}
\begin{document}
\begin{verbatim}
\usepackage{times}
\end{verbatim}
dans le préambule d'un document permet de sélectionner la fonte
times pour tout le corps du document.
\end{document}
%%%% fin exemple %%%%
A un niveau plus bas, dans la création d'un style par exemple, la
sélection d'une fonte peut se faire de la manière suivante :
-
\fontfamily{ccr}\fontencoding{T1}\fontseries{c}\fontshape{sl}%
\fontsize{9}{11pt}\selectfont
ou encore :
-
\fontsize{14}{16pt}\usefont{OT1}{cmdh}{bc}{it}
Pour définir une commande de changement de fonte, on peut utiliser
\DeclareFixedFont.
- Exemple :
-
-
\DeclareFixedFont{\petitefonte}{\encodingdefault}%
\familydefault}{\seriesdefault}{\shapedefault}{6pt}
\newcommand{\petit}{\petitefonte}
%%%% fin exemple %%%%
28.4 Comment changer la forme d'une fonte ?
En , pour un changement ponctuel de fonte, un certain nombre
de commandes sont disponibles par défaut :
- \textrm pour romain
- \textsf pour sans sérif
- \texttt pour du type machine à écrire
- \textmd pour une série moyenne
- \textbf pour du gras
- \textup pour des lettres droites
- \textit pour de l'italique
- \textsl pour des lettres penchées
- \textsc pour des petites capitales
- \textnormal pour la fonte par défaut du document.
- Exemple :
-
-
Un \textbf{bel} arbre.
Un \textbf{\textit{très bel}} arbre.
%%%% fin exemple %%%%
ce qui donne :
Un bel arbre.
Un très bel arbre.
Pour changer la fonte de tout un paragraphe, on utilisera plutôt les
commandes \rmfamily, \sffamily, \ttfamily,
\bfseries, \mdseries, \itshape,
\slshape, \upshape et \scshape.
- Remarque :
- si on utilise ces commandes sur un seul mot ou sur un
groupe de mot dans un paragraphe, alors l'espace suivant une telle
déclaration ne sera pas géré (il vaut mieux dans ce cas utiliser les
commandes \textxx).
- Exemple :
-
-
{\scshape BlaBla }
ou
-
\begin{itshape}
blabla
\end{itshape}
%%%% fin exemple %%%%
ce qui donne :
BLABLA
ou
blabla
28.5 Comment changer la taille d'une fonte ?
Il existe les commandes \tiny, \scriptsize,
\footnotesize, \small, \normalsize,
\large, \Large, \LARGE,
\huge, \Huge, classées dans l'ordre
croissant de taille. Ces commandes sont prédéfinies en fonction de
la classe de votre document.
- Remarque :
- changement de taille de la fonte entraîne automatiquement
un changement de l'interligne.
Plus globalement, vous pouvez utiliser la commande \fontsize
(cf. ).
28.6 Comment modifier la fonte des numéros de paragraphe ?
Pour modifier la fonte des numéros de paragraphe, il faut redéfinir
seccntformat.
- Exemple () :
-
-
\makeatletter
\renewcommand\@seccntformat[1]{\texttt{\@nameuse{the#1}\quad}}
\makeatother
%%%% fin exemple %%%%
28.7 Comment modifier la fonte du mode verbatim ?
Le package 'verbatim' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/required/tools/
permet de faire cela. Il est alors conseillé d'utiliser des fontes
aux normes T1.
L'environnement verbatimcmd du package 'moreverb', disponible sur
ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/,
permet de garder les caractères backslash (\) et les
accolades ({, et }) actifs. On peut donc entre autres opérer des
changements de fonte.
Pour changer la taille de la fonte du mode verbatim, il faut l'encapsuler
dans des commandes de modification de taille.
- Exemple :
-
-
Texte avant.
\begin{small}
\begin{verbatim}
Texte...
\end{verbatim}
\end{small}
Texte après.
%%%% fin exemple %%%%
28.8 Comment réaliser des changements de fontes relatifs ?
Le package 'relsize' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/
permet de faire ce genre de choses. Les commandes offertes sont du
type :
- \relsize{n} permet d'augmenter (n positif) ou de
diminuer (n négatif) la taille de la fonte par rapport à la taille
courante.
- Exemple :
-
-
Un \relsize{1}texte \relsize{2}de \relsize{3}toutes
\relsize{-1}les \relsize{-4}tailles.
%%%% fin exemple %%%%
- \smaller == \relsize{-1}
- \larger == \relsize{1}
avec un argument, on trouve :
-
\textsmaller{text}, \textlarger{text}, \mathsmaller{A}, \mathlarger{B}
%%%% fin exemple %%%%
Le package 'scalefnt' de D. Carlisle disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/carlisle/
permet d'augmenter ou de diminuer suivant un facteur proportionnel,
la taille de la fonte courante.
- Exemple :
-
-
\scalefont{2} double la taille de la fonte courante
\scalefont{.75} réduit de trois quarts la taille de la fonte
courante.
%%%% fin exemple %%%%
28.9 Comment mettre en évidence une portion de texte ?
Utiliser la commande \emph. Cette commande est définie
dans la classe de votre document, et sert spécifiquement à mettre
en évidence un mot, une expression ou toute une phrase. La plupart
du temps, elle se contente de mettre en italique votre texte.
28.10 Où trouver des fontes ?
Sur CTAN bien sûr, dans ftp://ftp.fdn.org/pub/CTAN/fonts/.
28.11 Comment suivre le chargement des fontes ?
Le package 'tracefnt' permet de suivre le chargement des fontes lors
de la compilation d'un document. Ce package définit plusieurs options
:
- infoshow pour avoir des informations sur le chargement des polices,
- errorshow permet de n'afficher que les erreurs, etc.
28.12 Pourquoi MakeTEXPK est lancé alors que la fonte existe ?
P. Terray :
C'est un problème de mise à jour de la base lié à kpathsea. Normalement,
MakeTEXPK met à jour la base ``ls-R'' de la TDS, à chaque ajout
de police. Si cette base n'est pas autorisée pour tout le monde, ou
si la variable TEXMF est mal réglée, dvips ou xdvi ne peuvent pas
vérifier que cette police existe. Du coup, ils lancent MakeTEXPK
pour la fabriquer. Et MakeTEXPK sachant par ailleurs où mettre
la police, il vérifie qu'elle existe, et c'est pour ça qu'il donne
le message comme quoi elle existe déjà.
Les solutions (UNIX) :
- vérifier que $TEXMF est bien réglée
- ls-R, fichier qui se trouve dans le répertoire texmf, doit être autorisé
en lecture écriture pour tout le monde
- reconstruire la base ls-R avec la commande texhash (tout court).
- ATTENTION :
- il faut avoir les droits de gestionnaire LATEX (ou
root) pour exécuter texhash.
28.13 Comment utiliser \textsc dans un titre en conservant
le gras ?
- Remarque :
- les sc grasses n'existent pas dans les fontes de Knuth.
En revanche, elles existent dans les fontes EC.
Depuis les dernières modifications dans les fontes EC, la simple utilisation
de ces fontes suffit à activer les petites capitales grasses.
28.14 Comment utiliser des fontes TrueType?
Une source d'information à ce sujet: http://www.radamir.com/tex/ttf-tex.htm
Toutes les questions qui n'ont pas pu être classées
dans les chapitres précédents sont regroupées ici. Il s'agit le plus
souvent de petits trucs très utiles que tout bon LATEX nicien devrait
connaître.
29.1 A quoi sert la commande \par ?
Elle permet de marquer explicitement la fin d'un paragraphe pour permettre
à LATEX de le mettre en page. L'utilité de cette commande se justifie
par le fait que LATEX met en page un texte par paragraphe. Elle
est, le plus souvent, utilisée dans la définition de macros.
29.2 Comment commenter une partie d'un source LATEX ?
- Sous LATEX2.09, il suffit d'utiliser l'environnement comment du
package 'version'.
- Exemple:
-
-
Un paragraphe qui intéresse tout le monde et qui est donc
visible par tout le monde.
\begin{comment}
Un paragraphe qui n'intéresse que moi et qui n'est visible
que dans le source de mon document.
\end{comment}
Un autre paragraphe qui intéresse tout le monde.
%%%% fin exemple %%%%
- Un environnement comment est également défini dans le package 'verbatim'
compatible LATEX2.09 et .
- Il est également possible de mettre des parties d'un document source
en commentaire grâce à l'environnement comment défini dans le package
'comment' de V. Eijkhout. Ce package est disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/misc/.
- Sous emacs, il y a une commande `comment-region' qui fait ça très
bien. Avec un argument, elle décommente.
- Classique et de bon goût, l'évaluation conditionnelle permet de mettre
en commentaire sans se soucier de l'imbrication des accolades, moins
puissant cependant que les packages qui créent un environnement comment:
- Exemple:
- \iffalse
Ce passage est en commentaire.
\fi
%%%% fin exemple %%%%
29.3 Comment utiliser LATEX sur des petites machines ?
La capacité de TEX est limitée de manière interne. Cela signifie
que ce sont des variables de TEX qui fixent le nombre de variables
(et la taille mémoire) maximal que TEX s'autorisera à utiliser.
Si vous utilisez plus de variables que prévu, TEX s'arrêtera sur
le message d'erreur :
-
sorry, TeX capacity exceeded.
Tout ceci est destiné à < < préserver > >
votre machine, c'est à dire à empêcher TEX d'utiliser la totalité
de la mémoire de la machine, ce qui conduit la plupart du temps à
un plantage.
Sur une station, aucun problème, mais sur un micro-ordinateur, les
configurations peuvent-être nombreuses. C'est pourquoi le TEX fournit
en < < standard > > sur les macs,
par exemple, des variables fixées assez bas (on suppose que le Mac
a une toute petite mémoire comparée à une station). Mais il existe
également un BigTEX, dont la seule différence avec le TEX normal
est qu'il est autorisé à utiliser plus de mémoire (les variables en
questions ont des valeurs plus importantes).
Du coup, si votre micro a une configuration plutôt musclée, vous pouvez
compiler des documents plus gros, plus complexes, etc...
Heureusement Kiffe a changé de stratégie et dans les futures versions
des outils les paramètres internes seront configurables (en passant
par ResEdit) et donc on décidera soi-même la < <
bigness > > de son TEX (cf. distributions emTEX
et AsTEX). Pour changer les paramètres de compilation (pool size,
stack, font mem, main mem etc.) cf. fichier emtex/doc/english/tex.doc,
chapitre .
La version 7.0 de web2c est configurable par le fichier texmf.cnf.
Remarque : pour un gros document, il peut être utile de le découper
en chapitres à inclure par la commande \include (cf.
paragraphe ).
29.4 Comment visualiser des paramètres ?
- Pour visualiser des paramètres spécifiques, il existe : \showt\baselinestretch
(n'importe où ou presque, donc affichage des éventuelles modifs, locales
ou globales). Ou pour avoir le résultat à la volée :
-
\message{Valeur de /baselinestretch = \the\baselinestretch}
- Il existe aussi la commande \showthe. Celle-ci affiche
les paramètres demandés dans le log. En outre, pendant la compilation,
elle affiche la valeur demandée puis met LATEX en attente. Il faut
alors taper s ou <RC> pour continuer.
- Exemple :
-
-
\documentclass{report}
\usepackage{french}
\pagestyle{empty}
\begin{document}
Texte.
\showthe\baselineskip
Texte.
\end{document}
%%%% fin exemple %%%%
- Pour afficher une valeur à l'écran lors de la compilation, il faut
utiliser : \message{** Textwidth = \the\textwidth
**}. Le message s'insère alors au milieu des milliers d'autres
choses que LATEX affiche : bien surveiller !
- Il existe également le package 'showkeys' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/package/tools/.
Il modifie les commandes \label, \ref,
\pageref, \cite et \bibitem
de manière à visualiser les paramètres internes utilisés.
- Pour visualiser les paramètres d'une page, il faut utiliser la commande
\layout du package 'layout'. Ce dernier est disponible
sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/required/tools/.
- Pour visualiser des labels, il existe le package 'showlabels' disponible
sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/showlabels/.
Les noms des labels utilisés par \label ou par la numérotation
automatique des équations apparaîtront dans la marge du document.
Ce package ne définit pas de commande particulière, il suffit d'appeler
\usepackage{showlabels} dans le préambule du document.
Dans le cas où des packages AMS sont utilisés, showlabels doit être
appelé après. Les options [inner] ou [outer] ou [twocolumn]
permettent de définir dans quelle marge vont apparaître les labels.
- Remarque :
- ce package n'est pas compatible avec les styles multicolonnes
ni avec l'option leqno.
29.5 Comment visualiser des compteurs ?
Pour visualiser la valeur d'un compteur, il suffit de demander
-
\immediate\write{16}{\the\nomducompteur}
ou
-
\message{\the\nomducompteur}
29.6 A quoi servent \makeatletter et \makeatother
?
Le caractère ``@'' est spécial pour LATEX, et ne peut pas être
utilisé directement comme partie d'un nom de macro dans un document
LATEX. Pour utiliser certaines macros internes de LATEX (celles
qui contiennent un ``@''), directement dans un document (au lieu
d'utiliser un fichier .sty), il faut les encapsuler dans une macro
dont le nom ne contient pas de ``@''. En outre, cette macro doit
impérativement être déclarée dans le préambule du document, et être
encadrée par les commandes \makeatletter et \makeatother.
En fait ces commandes permettent d'indiquer à LATEX que l'on veut
effectivement travailler sur ses commandes internes en le forçant
à considérer le ``@'' (at) comme une lettre (makeatletter).
- ATTENTION :
- les commandes internes de LATEX sont à manipuler
avec précaution.
29.7 Comment numéroter les lignes d'un document ?
Le package 'lineno' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/lineno/
permet de numéroter les lignes d'un document.
Il existe également le package 'numline' de M. Jaegermann et J. Fortune,
pour du texte essentiellement. Ce package est disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/numline/.
Pour numéroter les lignes d'un document inclu en mode verbatim, il
faut utiliser la commande \listinginput du package
'moreverb' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/moreverb/.
Le package 'vruler' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/vrsion/
permet également de numéroter les lignes d'un document.
29.8 A quoi sert la commande \special ?
La commande \special permet à TEX d'envoyer des
instructions particulières (non TEX) à un driver sans les interpréter.
Les instructions ainsi passées sont généralement dépendantes du driver
qui lui, saura les interpréter. L'utilisateur n'a en général pas à
se soucier de cette commande (\special), elle est gérée
par des packages tels que 'psfig' pour LATEX2.09 ou 'graphics'
et 'graphicx' pour .
- Remarque :
- \includegraphics est standard dans
et indépendant de la plateforme alors que le format de \special
est dramatiquement dépendant de la plateforme de travail. Seul, le
\includegraphics préserve l'aspect universel d'un document
source et donc l'esprit universel de TEX.
29.9 Comment réaliser des calculs avec les variables LATEX ?
Pour pouvoir utiliser des expressions du type \truc
* \machin dans une macro, il faut charger le package
'calc' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/calc/.
- Exemple :
-
-
\setcounter{x}{3*\real{1.3}}
%%%% fin exemple %%%%
Une autre solution consiste à utiliser les commandes \addtolength\dim\dim,
\divide \dim by \dim,
etc.
Le package 'realcalc' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/generic/realcalc/
permet de faire des calculs sur des réels.
Plus difficile à utiliser, il y a aussi le package 'trig'.
29.10 Où trouver une fonte 9pt ?
La classe de document 'amsart' disponible sur CTAN offre l'option
9pt.
De même les classes 'extarticle' et 'extreport' sont disponibles à
http://www.informatik.uni-freiburg.de/~may/extsizes.html.
size9.clo de H. Steffani est disponible à http://www.tu-chemnitz.de/~hfst/size9.clo.
29.11 Comment automatiser les compilations LATEX ?
- latexmk est un script perl, disponible sur ftp://ftp.fdn.org/pub/CTAN/support/latexmk/,
qui automatise la compilation d'un document LATEX. Il tourne en
démon et relance une compilation à chaque fois qu'un fichier source
(.tex, .bib, \input, etc) est sauvegardé. ``latexmk
fichier'' lance latex/makeindex/bibtex autant de fois qu'il le faut
pour que le dvi soit à jour.
- latexn disponible sur ftp://ftp.fdn.org/pub/CTAN/support/latexn
est un script csh qui permet également d'automatiser les compilations
latex.
- Le package AUC-TEX sous emacs conseille l'utilisateur sur la prochaine
opération à effectuer (LATEX, bibtex, makeindex, xdvi, etc.), en
fonction des dépendances entre les différents fichiers.
29.12 Comment obtenir des cadres gris ?
Le package 'shade' disponible sur ftp://ftp.fdn.org/pub/CTAN/macro/generic/
permet de tracer des cadres gris.
Le package 'psboxit', disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex2.09/contrib/misc/,
permet d'obtenir du gris ou de la couleur.
29.13 Comment obtenir certaines abréviations ?
Pour obtenir des abréviations dont certaines lettres doivent être
rehaussées et de taille réduite, on peut utiliser les indices mathématiques.
Mais, ce n'est pas une technique recommandable.
- Exemple :
-
-
M${\mathrm{lle}}$
%%%% fin exemple %%%%
Le package 'babel' propose la commande \ieme pour les
quantièmes.
Le package 'french' de B. Gaulle, définit la commande \fup
pour écrire une chaîne de caractères en exposant, ainsi que les commandes
\ier \iers \iere \iere
\ieme \iemes pour les quantièmes.
- Exemple :
-
-
M\fup{lle}
%%%% fin exemple %%%%
- Remarque :
- pour que la commande \fup suive les changements
de taille de fonte, il faut utiliser l'une des extensions prévues
à cet effet, à savoir les extensions ``smaller'' et ``relsize''
(\usepackage{smaller,french} par exemple). Une copie
de l'extension smaller est distribuée depuis 94 avec la distribution
des fichiers du style french (sous le nom mysmall.sty). En revanche,
la surélévation ne tient pas compte de l'inclinaison de la police.
Le package 'smaller' de D. Taupin est disponible par ftp sur ftp://ftp.lps.u-psud.fr/pub/latex/contrib/smaller.sty.
Il propose également une commande \fup qui définit
smaller et l@rger pour être compris par french.sty. Cette commande
gère l'inclinaison des \sl et des \it.
- ATTENTION :
- le fup de B. Gaulle étant installé au \begin{document},
pour utiliser mon \fup modifié avec french.sty, il
faut après le \begin{document} écrire:
-
\makeatletter
\let\fup\f@up
\makeatother
On peut également définir une nouvelle commande \abbr
dans le préambule du document :
-
\newcommand{\abbr}[1]{\raisebox{1ex}{\footnotesize #1}}
Cette solution a l'avantage d'éviter d'utiliser le mode mathématique
improprement.
Il existe aussi la commande \textsuperscript qui permet
d'obtenir un exposant sans passer en mode mathématique.
29.14 Comment gérer les espaces après une macro ?
Pour forcer LATEX à introduire un espace après une macro, il suffit
de faire suivre son appel d'un backslash (\).
- Exemple :
-
-
texte \oe\ texte \oe, texte
texte \oe texte \oe, texte
%%%% fin exemple %%%%
ce qui donne :
texte texte , texte
texte texte , texte
Pour que LATEX gère lui même les espaces, il suffit d'utiliser
systématiquement les caractères {}.
- Exemple :
-
-
texte \oe{} texte \oe{}, texte \oe{}uf
%%%% fin exemple %%%%
ce qui donne :
texte texte , texte uf
On peut également définir une macro TEX \keepspace
:
-
%%%% debut macro %%%%
\def\keepspace{\ifnum\catcode`\ =10
\let\next\keepspacebis \else \let\next\relax \fi
\next}
\def \keepspacebis{\obeyspaces
\afterassignment\keepspaceaux\let\next= }
{\obeyspaces%
\gdef\keepspaceaux{%
\ifx \next\space\let\next\ignorespaces\fi%
\catcode`\ =10\relax\next}}
%%%%
%%%% fin macro %%%%
puis l'utiliser dans une autre définition de macro.
- Exemple :
-
-
\newcommand{\macro}{\textit{blablabla}\keepspace}
%%%% fin exemple %%%%
Le package 'xspace' intègre ces définitions qui lui permette de gérer
automatiquement l'espace après une macro suivant le contexte.
- Exemple :
-
-
\documentclass{report}
\usepackage{french,xspace}
\pagestyle{empty}
\newcommand{\macro}{aaaaa\xspace}
\begin{document}
\macro bbbb \macro, bbbb
\end{document}
%%%% fin exemple %%%%
- Remarque :
- à noter que le package xspace est conforme aux règles
de typographie anglo-saxones donc la gestion des caractères de ponctuation
composés tels que : où ; ne sera pas correcte en français. La solution
consiste alors à utiliser le blanc insécable qui de toutes façons
est recommandé dans ce cas : \macro:
blabla. On peut également se créer son propre package 'fxspace'.
29.15 Où trouver les notices d'utilisation des packages ?
Généralement la notice d'utilisation d'un package est incluse dans
le package lui même (fichier .dtx). Il suffit alors de compiler ce
fichier. Il existe également le fichier doc disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/base/
qui décrit comment exploiter ces notices.
Si on lance ``latex package.dtx'' il sera produit le fichier package.sty
ou package.cls correspondant et le fichier package.dvi de documentation
de l'extension.
29.16 Comment obtenir des listes d'objets flottants ?
Certaines sont disponibles par défaut, il s'agit des listes de figures
et de tables, il suffit alors d'appeler les commandes \listoffigures
et \listoftables. D'autres sont liées à certains packages.
Par exemple, le package 'algorithm' de P. Williams offre la commande
\listofalgorithms.
- Remarque :
- la mise à jour de ces listes nécessite généralement plusieurs
compilations LATEX.
- Exemple :
-
-
\documentclass{report}
\usepackage{algorithm,algorithmic}
\begin{document}
\listofalgorithms
\chapter{toto}
\begin{algorithm}[h!tp]
\begin{algorithmic}[2]
\REQUIRE $T_1$ et $T_2$ doivent \etre des tableaux de
valeurs additionnables, et doivent \etre de la m\eme
longueur $n$. \ENSURE $\forall 0\leq k< n \;\;
Result[k]=T_1[k]+T_2[k]$.
\FOR{$i\rightarrow 0$ to $n$}
\STATE $Result[i]\rightarrow T_1[i]+T_2[i]$
\ENDFOR
\end{algorithmic}
\caption{Somme terme \`a terme de deux tableaux3}
\label{algo-ex-3}
\end{algorithm}
[recopie en trois exemplaires]
\end{document}
%%%% fin exemple %%%%
29.17 Comment connaître les versions des fichiers utilisés lors d'une compilation
?
Il suffit d'utiliser la commande \listfiles.
- Exemple :
-
-
\documentclass{report}
\listfiles
\usepackage{french}
\usepackage{graphics}
\begin{document}
texte ...
\end{document}
%%%% fin exemple %%%%
29.18 Pourquoi certaines commandes sont elles indépendantes ?
Les commandes LATEX de type verbatim sont particulières du fait
qu'elles changent les codes de catégorie de leurs arguments. De ce
fait, elles ne sont plus compatibles avec d'autres commandes et ne
doivent pas être appelées par ces dernières. Certains caractères spéciaux
doivent alors être obtenus par \texttt.
- Exemple :
-
-
\texttt{\char`\\}
%%%% fin exemple %%%%
On peut également utiliser l'environement lrbox de pour
sauver le texte qui doit apparaître en verbatim dans une boîte et
ensuite utiliser cette boîte.
29.19 Comment installer un package ?
Lorsqu'il s'agit d'un package conçu pour et utilisant les
procédures et outils définis dans ce cadre, c'est simple : un package
est fourni avec deux (ou plus, pour les packages plus complexes) fichiers,
package.ins et package.dtx
Il faut commencer par exécuter ``latex package.ins'' pour créer
le(s) fichier(s) de commandes lui(eux)-même(s) (typiquement package.sty)
puis ``latex package.dtx'' pour générer la documentation, avec
si besoin construction d'un index :
-
makeindex -s gind.ist -o package.ind package.idx
et d'un glossaire :
-
makeindex -s gglo.ist -o package.gls package.glo.
Ces fichiers doivent ensuite être déclarés dans une variable d'environnement
afin d'être rendus visibles.
- Exemple (UNIX) :
-
-
TEXINPUTS=.:/usr/local/TEX/texmf/tex:/users/ADMIN/NG/LATEX:
/users/home/kluth/Section-equit/Modele
%%%% fin exemple %%%%
- Remarques :
-
- on ne peut évidemment générer la documentation en premier, parce qu'elle
aura toujours besoin du fichiers des commandes ;
- si l'on ne veut obtenir que la documentation < <utilisateur> >,
il faut ajouter la ligne ``\OnlyDescription'' dans
le fichier package.dtx, avant la ligne ``\DocInput{package.dtx}''.
Sinon on obtient aussi le listage commenté du code, ce dont on peut
ne pas vouloir se soucier et qui peut être volumineux pour les packages
importants.
Néanmoins, il est clair que ce mode d'organisation et de distribution
n'est que le mode encouragé par l'équipe de développement de LATEX
et n'est en rien une obligation. Un bon nombre de packages disponibles
ne le suit d'ailleurs pas (!), pour diverses raisons (packages qui
se veulent utilisables aussi bien avec Plain TEX qu'avec LATEX,
< < vieux > > packages écrits
pour LATEX209, packages écrits par des personnes qui veulent faire
< < comme ça leur plait > >, etc.)...
Dans ces différents cas, il faut < < aller y voir
de plus près > > pour comprendre l'organisation
choisie.
C'est justement le cas pour slashbox (!) : un seul fichier .sty est
fourni. Il faut l'éditer pour extraire le fichier de documentation
qui se trouve après la ligne 80 ``\endinput''.
- Pour WINDOWS :
-
- copier le fichier package.ins dans un répertoire temporaire et le
compiler avec LATEX ;
- déplacer le fichier package.sty dans un répertoire visible par LATEX,
soit commun à tous les utilisateurs, soit local, soit personnel :
- pour fpTEX, ce sont respectivement les répertoires (déclarés
à l'installation de fpTEX) ./texmf/tex/latex/lerepertoiredemonpackage
(à créer si besoin), ./texmf.local/tex/latex/lerepertoiredemonpackage
(à créer si besoin), HOME/texmf/tex/latex/lerepertoiredemonpackage
(à créer si besoin) ; - pour MikTEX, ce sont les mêmes répertoires
mais le répertoire local est ./localtexmf/ et que le HOME
ne semble pas être prévu : [FMF : je ne suis pas sûre de ce dernier
point]
- reconstruire la base de données des packages (rebuild ls-R
filenames databases pour fpTEX, refresh filename database
pour MikTEX).
29.20 Comment générer des codes barres ?
29.21 Comment gérer des abbréviations ?
Le package 'abbrevs' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/monster/
permet automatiquement de remplacer des abbréviations par leur formule
développée notamment lors d'un premier appel.
Le package 'acronym' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/acronym/
permet de s'assurer que tous les acronymes utilisés dans un document
apparaissent au moins une fois sous une forme développée.
29.22 Comment imprimer un fichier postscript sur une imprimante non postscript
?
alladin est un excellent programme qui permet d'imprimer du postscript
sur à peu près n'importe quelle imprimante. Cet outil est disponible
par ftp sur ftp://ftp.lip6.fr/pub/ghost/aladdin/.
- Remarque :
- on ne peut pas dire que ce soit d'une très grande facilité
d'installation, mais une fois que ce mauvais moment est passé, on
ne peut plus s'en passer :-)
29.23 Comment surcharger une commande déjà existante ?
Pour pouvoir ajouter des définitions sur une commande prédéfinie sans
la réécrire complètement, il faut utiliser la commande \let.
- Exemple :
-
-
\let\standardsection=\section
\def\section{\newpage\standardsection}
%%%% fin exemple %%%%
Il existe aussi la commande expandafter.
- Exemples :
-
-
\toks0 \expandafter{\section}
\edef\section{\noexpand\newpage\the\toks0 }
\expandafter\def\expandafter\section\expandafter{\expandafter%
\newpage\section}
%%%% fin exemple %%%%
Le package 'babel' propose également la commande \addto.
29.24 Comment reporter l'exécution d'une commande à la fin d'une page ?
Il existe pour cela le package 'afterpage' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/required/tools/.
- Exemple :
-
-
\afterpage{\clearpage}
%%%% fin exemple %%%%
29.25 Comment définir des scripts interactifs ?
Le package 'dialogl' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/dialogl/
permet de définir des scripts LATEX interactifs.
29.26 Comment identifier une version provisoire ?
Le package 'draftcopy' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/draftcopy/
permet par exemple d'écrire le mot DRAFT en grisé en diagonale sur
toutes ou certaines pages d'un document. Il permet également de faire
moins voyant.
- Exemple :
-
-
\documentclass{report}
\usepackage{french}
\usepackage{draftcopy}
\begin{document}
Voici une version provisoire de mon texte. Pourriez-vous la
relire et me faire part de vos commentaires avant la fin de
la semaine?
Merci d'avance.
\paragraph{Proposition.}
Texte provisoire -- Texte provisoire -- Texte provisoire --
Texte provisoire -- Texte provisoire -- Texte provisoire --
Texte provisoire -- Texte provisoire -- Texte provisoire --
Texte provisoire -- Texte provisoire -- Texte provisoire --
Texte provisoire -- Texte provisoire -- Texte provisoire --
Texte provisoire -- Texte provisoire -- Texte provisoire --
Texte provisoire -- Texte provisoire -- Texte provisoire --
Texte provisoire -- Texte provisoire -- Texte provisoire --
Texte provisoire -- Texte provisoire -- Texte provisoire
\end{document}
%%%% fin exemple %%%%
Le package 'drafthead' également disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/misc/
permet lui de n'agir que sur les en-têtes des documents.
On peut également utiliser la macro :
-
%%%% debut macro %%%%
\special{
! userdict begin /bop-hook{
stroke
gsave 240 100 translate
65 rotate /Times-Roman findfont 220 scalefont setfont
0 0 moveto 0.9 setgray (DRAFT) show grestore
}def end}
dans le préambule de son document.
%%%% fin macro %%%%
Le package 'prelim2e' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/prelim2e/
offre également un marquage des versions préliminaires d'un document.
29.27 Comment obtenir des caractères barrés ?
Le package 'ulem' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/
permet de barrer des caractères.
- Exemple :
-
-
\sout{je barre tout}
%%%% fin exemple %%%%
29.28 A quoi sert la commande \ensuremath ?
La commande \ensuremath assure que son argument sera
imprimé en mode mathématique quel que soit le mode courant.
- Exemple :
-
-
\documentclass{report}
\usepackage{french}
\pagestyle{empty}
\newcommand{\mc}{\ensuremath{(\alpha, \beta)}}
\begin{document}
Le couple \mc\ définit par $\mc = x+y, x-y$, ...
\end{document}
%%%% fin exemple %%%%
29.29 A quoi servent les commandes \(re)newcommand ?
La commande \newcommand permet à l'utilisateur de définir
ces propres commandes. La commande \renewcommand permet
de redéfinir des commandes LATEX déjà existantes. Elle s'utilise
dans le préambule du document :
-
\newcommand{nom_commande}[nb_arguments]{définition}
nb_arguments définit le nombre d'arguments de la nouvelle commande
LATEX. Il est compris entre 0 et 9. Ils sont référencés par #no_argument
dans la définition.
- Exemple :
-
-
\documentclass{report}
\usepackage{french}
\pagestyle{empty}
\newcommand{\be}{\begin{enumerate}}
\newcommand{\ee}{\end{enumerate}}
\newcommand{\bold}[1]{\textbf{#1}}
\begin{document}
\bold{Faites votre choix:}
\be
\item premier choix: A
\item deuxième choix: B
\item troisième choix: C
\ee
\end{document}
%%%% fin exemple %%%%
- Remarques :
- La commande \providecommand permet de
ne prendre en compte la nouvelle commande que si elle n'existe pas
déjà.
Pour définir un argument optionnel, on utilise la syntaxe :
-
\newcommand{nom}[nb_arg][defaut]{definition}
defaut permet de préciser une valeur par défaut de la variable qui
sera utilisée en l'absence d'argument. L'argument optionnel ne peut
être que #1.
29.30 Où trouver des hirondelles ?
On peut trouver la package 'cropmark' sur ftp://ftp.fdn.org/pub/CTAN/macros/generic/.
29.31 Comment tracer des lignes ?
On peut mettre la définition suivante dans le préambule du document
:
-
\def\ligne#1{\leaders\hrule height #1\linethickness \hfill}
puis utiliser :
-
\ligne{5}
dans le texte.
Il existe également la commande \rule qui prend en
premier argument, la longueur horizontale du trait et, en deuxième,
son épaisseur. Elle possède également un argument optionnel qui permet
de positionner la ligne traçée par rapport à la ligne d'écriture.
- Exemple :
-
-
\rule[0.5ex]{\textwidth}{0.1mm}
%%%% fin exemple %%%%
On peut aussi utiliser les commandes \hrule pour des
lignes horizontales et \vrule pour des lignes verticales.
29.32 Comment imprimer le caractère ?
fournit la commande \textasciitilde sous
fonte T1. Sous OT1, il faut définir :
-
\ProvideTextCommand{\textasciitilde}{OT1}{\{}}
Il est possible de passer par le mode verbatim via la commande :
-
\verb$$.
On peut aussi définir sa propre commande :
-
\def\mytilde{\raisebox{-.8ex}{\}\hspace{-0.15em}}
\{} permet également d'obtenir un
tilde.
Une autre solution consiste à utiliser $\sim$.
Autre solution, utiliser : \char`\
- Remarque :
- la première solution est de loin la meilleure.
29.33 Comment visualiser tous les caractères d'une fonte ?
Le plus simple consiste à utiliser :
-
latex nfssfont
nfssfont.tex est un fichier disponible sur CTAN.
Il faut ensuite donner le nom de la fonte à examiner par exemple cmr10
puis construire la table des caractères en utilisant la commande \table.
Cela permet de construire un fichier .dvi contenant les codes de tous
les caractères.
L'appel d'un symbole se fait alors via la commande \symbol{x}
où x est le code associé au caractère voulu (c'est un entier compris
entre 0 et 255).
On peut également utiliser \char''<octal> ou \char<hexa>
ou encore \char<decimal> mais ses commandes sont moins
robustes.
29.34 A quoi sert % dans les macros ?
Le % en fin de ligne d'une macro permet d'indiquer à LATEX que
la définition qu'il est en train de lire continue à la ligne suivante.
De manière générale, les espaces après une macro sont ignorés, mais
pas après les accolades. Ce caractère permet de s'assurer que des
espaces non voulus ne seront pas pris en compte. Ainsi, il est prudent
de mettre un % après chaque accolade qui se trouve en fin de ligne.
29.35 Comment inclure l'heure dans un document ?
La macro décrite ci-dessous, à inclure dans le préambule de votre
document, définit la commande \timenow :
-
%%%% debut macro %%%%
\makeatletter
\def\timenow{\@tempcnta\time
\@tempcntb\@tempcnta
\divide\@tempcntb60
\ifnum10>\@tempcntb0\fi\number\@tempcntb
\multiply\@tempcntb60
\advance\@tempcnta-\@tempcntb
:\ifnum10>\@tempcnta0\fi\number\@tempcnta}
\makeatother
%%%% fin macro %%%%
Le package 'time' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/generic/time.sty
permet d'inclure l'heure courante dans un document.
En ajoutant la macro suivante de H. Hanche-Olsen dans le préambule
de son document, on peut via la commande
-
%%%% debut macro %%%%
%\isodayandtime obtenir la date et l'heure courante :
\begingroup
\count0=\time \divide\count0by60 % Hour
\count2=\count0 \multiply\count2by-60 \advance\count2by\time
% Min
\def\2#1{\ifnum#1<10 0\fi\the#1}
\xdef\isodayandtime{\the\year-\2\month-\2\day\space\2{\count0}:%
\2{\count2}}
\endgroup
%%%% fin macro %%%%
Autre exemple d'utilisation (qui nécessite dvips) :
-
%%%% debut macro %%%%
\special{!userdict begin /bop-hook
{gsave -90 rotate -780 560 moveto 1.0 0.7 0.7 setrgbcolor
% 0.8 setgray
106 45 {dup mul exch dup mul add 1.0 exch sub} setscreen
/Times-Roman findfont 25 scalefont setfont (DRAFT
\isodayandtime) show grestore} def}
%%%% fin macro %%%%
On peut également utiliser la macro \time qui donne
l'heure en minutes. Pour afficher l'heure en heures et minutes, il
faut les calculer puis les afficher avec la macro \the.
- Exemple 1 :
-
-
\documentclass{article}
\usepackage{french}
\pagestyle{empty}
\begin{document}
Cette compilation a démarré à \the\time\ minutes après minuit
le \today.
\end{document}
%%%% fin exemple %%%%
- Exemple 2 :
-
-
\usepackage{calc}
\newcounter{hours}\newcounter{minutes}
\newcommand{\printtime}{%
\setcounter{hours}{\time/60}%
\setcounter{minutes}{\time-\value{hours}*60}%
\thehours :\theminutes}
%%%% fin exemple %%%%
Il existe également le package 'heure' de T. Bouche donné ci-dessous
:
-
%%%% debut macro %%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{heure}
[1996/6/11v0.1 affiche le jour et l'heure de production d'un
document]
\newif\if@heure@fin\@heure@finfalse
\newif\if@heure@final\@heure@finalfalse
\DeclareOption{fin}{\@heure@fintrue}
\DeclareOption{final}{\@heure@finaltrue}
\DeclareOption{draft}{}
\ProcessOptions
%%% définition de hours prise dans testfont
\newcount\m \newcount\n
\def\hours{\n=\time \divide\n 60
\m=-\n \multiply\m 60 \advance\m \time
\twodigits\n\ :\ \twodigits\m}
\def\twodigits#1{\ifnum #1<10 0\fi \number#1}
%%%%%%% Tant que ça n'est pas définitif.
\if@heure@final\else
\AtBeginDocument{\begin{center}%
{\bfseries\itshape\large Version du \today\ à \hours }%
\end{center}}
\fi
\if@heure@fin
\AtEndDocument{%
\begin{flushright}%
\small \itshape (Le \today\ à \hours )\hspace*{3em}%
\end{flushright}}
\fi
\endinput
%%%% fin macro %%%%
Utilisation : Il suffit de passer fin, final ou draft en option de
classe.
- Exemple 1 :
-
-
\documentclass[11pt,draft]{article}
\usepackage{heure}
\begin{document}
Voici le résumé de notre expérience avec le Brome:
Bla bla bla.
\end{document}
%%%% fin exemple %%%%
- Exemple 2 :
-
-
\documentclass[11pt,fin]{article}
\usepackage{heure}
\begin{document}
Voici le résumé de notre expérience avec le Brome:
Bla bla bla.
\end{document}
%%%% fin exemple %%%%
- Exemple 3 :
-
-
\documentclass[11pt,final]{article}
\usepackage{heure}
\begin{document}
Voici le résumé de notre expérience avec le Brome:
Bla bla bla.
\end{document}
%%%% fin exemple %%%%
29.36 Comment compter le nombre de mots d'un fichier ?
A priori, il n'y a pas de solution simple à ce problème :
- A partir du fichier source .tex, il faut enlever toutes les commandes
LATEX avec un utilitaire tel que detex (disponible sur ftp://ftp.fdn.org/pub/CTAN/support/detex/)
puis utiliser un autre utilitaire tel que wc sous UNIX.
- On peut également travailler à partir du fichier .dvi en appliquant
dvitty (ou dvi2tty).
- ATTENTION :
- aucune de ces méthodes n'est idéale comme l'indique
l'essai comparatif de T. Bouche :
-
detex -i grfguide.tex | wc -w donne 4420
dvitty grfguide.dvi |wc -w donne 4524
wc -w grfguide.tex donne 4539
ps2ascii grfguide.ps |wc -w donne 5066
29.37 Comment rendre inactif un caractère ?
La commande \string permet de désactiver un caractère
rendu actif par une macro.
- Exemple :
-
-
En français le : est rendu actif pour que LaTeX gère lui-même l'espace à mettre avant.
En revanche, dans une URL ou une adresse mail cet espace est superflu. On utilise donc :
mailto\string:moi.meme@chez.mon.site
%%%% fin exemple %%%%
29.38 Comment utiliser le mode verbatim dans une commande ?
fournit l'environnement lrbox.
- Exemple :
-
-
\documentclass{article}
\usepackage{alltt}
\pagestyle{empty}
% ---------------
\newsavebox{\inverbatim}
\begin{lrbox}{\inverbatim}%
\noindent\begin{minipage}{\linewidth}
\begin{alltt}
1
-8 + 7 Sqrt[2] ArcTanh[-------]
Sqrt[2]
\end{alltt}
\end{minipage}%
\end{lrbox}% box
% ------------------------------------
\begin{document}
\noindent
L'expression : \usebox{\inverbatim} démontrée au paragraphe
précédent prend ici tout son sens.
En effet l'expression \usebox{\inverbatim} permet\ldots
\end{document}
%%%% fin exemple %%%%
29.39 Comment redéfinir la commande \year ?
Pour ne faire apparaître que deux chiffres au lieu de quatre, il faut
utiliser :
-
\newcommand{\ignoretwo}[2]{}
\newcommand{\shortyear}{\expandafter\ignoretwo\the\year}
dans le préambule du document.
29.40 Qu'est ce que la magnification ?
La commande magnification permet de faire un zoom d'un document.
- Exemple :
-
-
\mag=1440
\documentclass{...}
%%%% fin exemple %%%%
On peut également travailler sur le fichier postscript via dvips avec
l'option -x nombre où nombre vaut par exemple 1200 pour un agrandissement
de 20%.
De la même manière, le package 'scale' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/scale/
permet de modifier l'échelle d'un document avant impression.
29.41 Comment sont gérés les postscripts dans LATEX ?
P. Perichon :
TEX/LATEX + DVIPS procèdent en 2 temps :
- Lorsque l'on a une figure PostScript (EPS : Encapsulated PostScrit),
on met les commandes nécessaires dans son source (fichier .tex) pour
dire à TEX/LATEX que l'on veut cette figure à telle place dans
son document avec telles dimensions (en incluant la bonne extension
: graphicx, psfig, epsfig) . Lors de la phase d'interprétation du
code TEX/LATEX, l'interprète TEX/LATEX va seulement consulter
dans le fichier externe contenant la figure les dimensions/proportions
de l'image (les fameuses bounding box chères au PostScript Encapsulé).
En fin de course, dans le fichier DVI on aura le nom et les dimensions
de l'image mais PAS CELLE-CI (qui est toujours externe). Donc si on
visualise juste le fichier DVI, on voit l'emplacement de l'image mais
pas cette dernière (en particulier la commande \psdraft
génère un cadre genre \fbox{...} aux dimensions de
l'image à l'emplacement de celle-ci).
- Dans un deuxième temps, la commande DVIPS, transformera le fichier
DVI en PostScript et incluera à ce moment les fichiers images EPS.
Donc si on visualise/imprime le fichier PostScript, on voit le texte
et les images.
Toutefois, certains visualiseurs DVI, par exemple XDVI sous UNIX pour
ne pas le citer, détectent quelque chose du genre :
-
PSfile="toto.eps" llx=0 lly=-1 urx=57 ury=29 rwi=4252
dans le fichier DVI, et appellent gentiment GostScript/GhostView qui
vont préparer une image bitmap que le visualiseur DVI s'empressera
de montrer (quand ça marche : avec psfig.sty pas de problème, mais
avec l'extension graphicx...). Mais d'autres visualiseurs, comme DVIWIN,
ne savent pas que faire d'un fichier PS.
DVI signifie DeVice Independent : ceci est un format de document indépendant
du système d'impression. Donc non lié à un langage de description
de page utilisé en interne par une quelconque imprimante (PostScript,
PCL, HPGL, Windows GDI, ...). Il suffit après d'utiliser un convertisseur
qui transforme le DVI en quelque chose que comprend votre imprimante
(PostScript, HPGL, PCL, ...). Cette méthode permet d'imprimer sur
n'importe quel type d'imprimante (il suffit d'avoir le bon convertisseur).
Mais hélas en DVI, il n'a point été prévu d'y mettre une image (le
problème n'est en effet pas simple). D'où l'utilisation de fichier
EPS.
29.42 Pourquoi LATEX n'accepte-t'il pas tous les formats d'image ?
P. Perichon :
Le problème est le suivant : un fichier DVI + image TIFF, GIF, TGA,...
comment faire digérer tout ça par votre imprimante ???? Le fichier
DVI peut se faire convertir en un langage d'impression compréhensible
par votre imprimante... mais vos formats d'images... faudrait-il en
plus prévoir un système de conversion de TIFF, GIF, TGA, ... vers
le langage d'impression de votre imprimante (Alladin avec GhostScript/GhostView
propose quelques filtres, mais bon). A part quelques langages de description
de pages comme PostScript et un ou deux autres qui pratiquent une
compatibilité ascendante quant aux versions du langage qu'ils utilisent,
les autres fabricants d'imprimantes changent de langage quasiment
à chaque modèle ou série d'imprimante (impossible de tenir à jour
autant de convertisseurs).
Pour tout cela le langage PostScript (PS et EPS) nous rend grandement
service en nous simplifiant la vie (et pour d'autres raisons aussi).
C'est peut-être un peu plus lourd à manipuler, mais plus simple pour
tout le monde de convertir vos images en EPS. De plus, si vous ne
disposez pas d'imprimante PostScript, GhostScript/GhostView se chargera
d'interpréter le fichier PS (texte + images), fabriquera une bitmap
à la bonne résolution et pourra l'envoyer à votre imprimante via votre
pilote d'impression. Tout cela automatisé dans une bonne distribution
est transparent à l'utilisateur.
Pour plus de détails, consulter le grfguide disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/packages/graphics/
et le document epslatex disponible sur ftp://ftp.fdn.org/pub/CTAN/info/.
29.43 A quoi sert la commande \(re)newenvironment ?
Les commandes \newenvironment et \renewenvironment
permettent de définir des actions qui seront appliquées entre les
commandes \begin{mon_environnement} et \end{mon_environnement}.
Ces commandes doivent être appelées dans le préambule du document
suivant la syntaxe :
-
\newenvironment{nom}[nb_arg]{avant}{après}
avant et après sont les actions qui auront lieu à l'entrée et à la
sortie du nouvel environnement.
- Exemple :
-
-
\documentclass{report}
\usepackage{french}
\newenvironment{Relief}[1]
{\mbox{\Large{\uppercase{#1}}}}
\begin{document}
\begin{Relief}
{Il}était une foisldots
\end{Relief}
\begin{Relief}
{U}n jour peut êtreldots
\end{Relief}
%%%% fin exemple %%%%
29.44 Comment récupérer le nom du fichier compilé ?
Pour récupérer le nom du fichier compilé et l'afficher lors d'une
compilation, il faut utiliser la commande \jobname.
- Exemple :
-
-
Le fichier source est \texttt{\jobname.tex}.
%%%% fin exemple %%%%
29.45 Comment gérer des conditions de traitement dans un style ?
Le package 'ifthen' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/base/
permet d'implémenter des traitements conditionnels tels que \ifthenelse
et \whiledo.
29.46 A quoi servent les commandes \setlength et \addtolength
?
Ces deux commandes permettent de modifier la longueur de certains
paramètres.
- Exemples :
-
-
\setlength{nom_parametre}{longueur}
\addtolength{nom_parametre}{longueur}
%%%% fin exemple %%%%
29.47 Quelles sont les unités de mesure de TEX ?
TEX comprend six unités de mesure :
- pt point = 0,35 mm
- mm millimètre
- ex correspond à la hauteur d'un x dans la fonte courante
- em correspond à la largeur d'un m dans la fonte courante
- cm centimètre
- in pouce = 2,54 cm
29.48 A quoi sert la commande \mbox ?
La commande \mbox permet à LATEX de considérer son
argument comme une seule entité. Elle peut ainsi empêcher la coupure
d'un mot ou d'un groupe de mots.
- Exemple :
-
-
Mon numéro de téléphone est lembox{01 69 63 12 68}.
%%%% fin exemple %%%%
ce qui donne :
Mon numéro de téléphone est le 01 69 63 12 68.
29.49 Comment obtenir des points de suspension ?
La commande \ldots permet d'obtenir trois points de
suspension espacés correctement.
29.50 Comment désactiver une ligature ?
Pour désactiver une ligature, il faut introduire {} ou une \mbox{}
entre les lettres ligaturées.
- Exemple :
-
-
comparez effacer, ef{}facer et ef\mbox{}facer
%%%% fin exemple %%%%
ce qui donne :
comparez effacer, effacer et effacer
29.51 Comment gérer les versions d'un document ?
Pour les versions provisoires, voir la question .
Il existe le package 'vrsion' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/vrsion/
qui permet via la commande \version d'inclure un numéro
de version dans un document LATEX. Ce numéro est incrémenté à chaque
compilation.
On peut également se reporter à la question pour inclure
le jour et l'heure de compilation dans un document.
29.52 Comment changer certains titres ?
Il suffit de renommer les variables suivantes :
-
\def\refname{R\'ef\'erences}%
\def\abstractname{R\'esum\'e}%
\def\bibname{Bibliographie}%
\def\prefacename{Pr\'eface}%
\def\chaptername{Chapitre}%
\def\appendixname{Annexe}%
\def\contentsname{Table des mati\`eres}%
\def\listfigurename{Table des figures}%
\def\listtablename{Liste des tableaux}%
\def\indexname{Index}%
\def\figurename{{\scshape Fig.}}%
\def\tablename{{\scshape Tab.}}%
\def\partname{\protect\@Fpt partie}%
\def\@Fpt{{\ifcase\value{part}\or Premi\`ere\or Deuxi\`eme\or
Troisi\`eme\or Quatri\`eme\or Cinqui\`eme\or Sixi\`eme\or
Septi\`eme\or Huiti\`eme\or Neuvi\`eme\or Dixi\`eme\or
Onzi\`eme\or Douzi\`eme\or Treizi\`eme\or Quatorzi\`eme\or
Quinzi\`eme\or Seizi\`eme\or Dix-septi\`eme\or
Dix-huiti\`eme\or Dix-neuvi\`eme\or Vingti\`eme\fi}}%
\space\def\thepart{}}%
\def\pagename{page}%
\def\seename{{\emph{voir}}}%
\def\alsoname{{\emph{voir aussi}}}%
\def\enclname{P.J. }%
\def\ccname{Copie \`a }%
\def\headtoname{}%
\def\proofname{D\'emonstration}% for AMS-LaTeX
Remarque : lorsque certains changements de noms sont déjà gérés par
un package (french par exemple) il faut placer les définitions ci-dessus
après le \begin{document}.
29.53 Comment insérer un code source dans un document ?
- Le package 'listings' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/listings/
permet de gérer la mise en page de code source avec notamment la mise
en relief de mots clés.
- La distribution GUTenberg contient un package du nom de 'lgrind' (executable+lgrind.sty)
qui, entre autres (C, C++, Pascal, BASIC, Modula-2, Fortran, RATFOR,
Yacc, PostScript, Prolog, MLisp, Icon, LATEX, Perl, CSH, Bourne
Shell, assembler, 68000 assembler, asm68, VMS assembler, ISP, LDL,
Linda, MODEL, MatLab, Russell), formatte du code C++ en LATEX.
Ce programme disponible sur CTAN permet à partir de code source C
de générer du code LATEX respectant l'indentation. Ce package est
également disponible sur ftp://ftp.fdn.org/pub/CTAN/support/lgrind/.
- wflman disponible par ftp sur ftp://ftp.keck.hawaii.edu/pub/wlupton/wflman-2.2.2.tar.gz
peut aussi être utile.
- Il existe également DOC++ qui peut créer une documentation HTML ou
LATEX à partir des infos ajoutées dans les commentaires du code
C++. Pour plus de détails, voir : http://www.ZIB-Berlin.DE/VisPar/doc++/doc++.html
- Le package 'tgrind', qui vient avec un .sty et une moulinette permet
de transformer un .c en .tex
- Le package 'c++2latex' sous license GNU est capable de convertir des
fichiers C, C++ et JAVA en . Les lignes peuvent être numérotées.
- Le package 'cprog' disponible sur CTAN permet de formater des programmes
C en TEX.
- Le package 'c2ltx', de M. Plugge (plugge@biv7.sr.fh-mannheim.de),
appartient à la famille de convertisseurs cvt2ltx. Il numérote les
lignes, traduit != en $\neq$ , gère les commentaires,
les en-têtes de procédures, etc. Il supporte plusieurs fichiers d'entrée
et gère automatiquement les changements de section et la génération
d'index. Une documentation est disponible par ftp sur ftp://axp3.sr.fh-mannheim.de/cvt2latex/cvt2ltx.zip.
29.54 Comment tracer une ligne horizontale ?
Pour obtenir une ligne centrée par rapport à la mi-hauteur au dessus
de la ligne d'écriture, on peut utiliser ceci :
-
\hbox{\raisebox{0.4em}{\vrule depth 0pt height 0.4pt width 1cm}Toto}
de qui donne :
29.55 Comment générer un espace invisible de taille donnée ?
Il existe pour cela la commande \phantom. Celle-ci
génère un espace invisible de la même longueur que son argument.
- Exemple :
-
-
Complète les mots qui manquent dans le texte suivant:
Le petit chaperon \phantom{rouge} se promèneldots.
%%%% fin exemple %%%%
ce qui donne :
Complète les mots qui manquent dans le texte suivant :
Le petit chaperon se promène ....
29.56 Qu'est ce qu'une correction italique ?
Pour que LATEX puisse gérer correctement le passage d'une fonte
italique à une fonte droite, il peut être utile d'utiliser la commande
\/. Cela permet d'augmenter légèrement l'espace qui
sépare la dernière lettre en italique, de la première lettre droite.
- Exemple :
-
-
Un \textit{cheval}\/ file au galop.
%%%% fin exemple %%%%
ce qui donne :
Un cheval file au galop.
29.57 Quels sont les accents accessibles sous LATEX ?
Les accents accessibles sous LATEX sont les suivants :
- \`{a} ou \`a accent grave soit à
ou à
- \'{e} ou \'e accent aigu soit é
ou é
- \{i} ou \i
accent circonflexe soit î ou î
- \"{o} ou \"o trema soit ö ou ö
- \{u} ou \u tilde soit ~u ou ~u
- \={o} ou \=o surligné soit ¯o ou ¯o
- \.{o} ou \.o point soit \.o ou \.o
- \u{o} soit o
- \v{o} soit o
- \H{o} trema hongrois soit ö
- \t{oo}
- \c{c} cédille soit ç
- \d{o} point en dessous soit o
- \b{o} sousligné soit o
29.58 Comment écrire dans un fichier pendant une compilation ?
On dispose pour cela des commandes \write et \newwrite.
- Exemple :
-
-
\newwrite\test
\openout\test=toto
\write\test{Je m'appelle Paul}
\write\test{\noexpand\thesection}
\closeout\test
\bye
%%%% fin exemple %%%%
- Remarque :
- \noexpand permet d'inclure des commandes
LATEX sans qu'elles soient interprêtées.
Le package 'french' propose la commande \originaloutput[fichier]{texte}
pour écrire le ``texte'', tel qu'il est fourni, dans le ``fichier''.
Dans ce cas, les caracteres actifs de french sont automatiquement
desactivés. C'est donc l'equivalent de \immediate\write\fichier{texte}.
Le package 'sverb' disponible sur CTAN propose l'environnement verbwrite.
- Exemple :
-
-
\begin{verbwrite}{fichier.tmp}
Ce texte va être sauvé dans le fichier fichier.tmp.
\end{verbwrite}
%%%% fin exemple %%%%
29.59 Comment gérer des compteurs ?
Un certain nombre de compteurs sont prédéfinis dans LATEX, il s'agit
:
- des compteurs de structuration du document : part, chapter, section,
subsection, subsubsection, paragraph, subparagraph,
- du compteur de page,
- du compteur d'équation,
- du compteur de figure,
- du compteur de tables,
- des compteur de notes : footnote et mpfootnote,
- et des compteurs de liste : enumi, enumii, enumiii et enumiv.
Pour définir son propre compteur, il faut utiliser la commande
-
\newcounter{nv_cptr}[ref_cptr].
Lorsque qu'un compteur déjà existant est passé en argument (ref_cptr),
le nouveau compteur nv_cptr sera réinitialisé à chaque incrément
via
-
\stepcounter
ou
-
\refstepcounter
du compteur ref_cptr.
Par défaut, la valeur d'un nouveau compteur est 0. La commande
-
\setcounter{cptr}{val}
permet de lui donner une autre valeur. On peut également incrémenter
la valeur d'un compteur via la commande
-
\addtocounter{cptr}{val}
La valeur d'un compteur peut être récupérée, dans un calcul par exemple,
grâce à la commande
-
\value{cptr}
\stepcounter{cptr} permet d'incrémenter le compteur
cptr et de réinitialiser tous les compteurs liés par référence (argument
ref_cptr de la commande \newcounter). La commande
\refstepcounter{cptr} permet en outre de mettre à
jour la valeur courante du compteur qui pourrait être appelé par un
\ref.
\thecptr, où cptr est le nom d'un compteur permet d'afficher
sa valeur.
- Exemple :
-
-
\newcounter{section}
\newcounter{subsection}[section]
%%%% fin exemple %%%%
29.60 Quels sont les différents styles de compteurs ?
Il en existe six prédéfinis :
- \arabic{cptr} pour un nombre arabe,
- \roman{cptr} pour un nombre romain minuscule,
- \Roman{cptr} pour un nombre romain majuscule,
- \alph{cptr} pour une lettre minuscule,
- \Alph{cptr} pour une lettre majuscule,
- \fnsymbol{cptr} pour un symbole.
- Exemple :
-
-
\renewcommand{\thesection}{\Roman{section}}
\renewcommand{\thesubsection}{\thesection.\roman{subsection}}
%%%% fin exemple %%%%
29.61 Comment programmer un traitement itératif ?
Le package 'multido' propose une commande \multido
qui est une boucle TEX. Sa syntaxe est la suivante :
-
\multido{variables}{nbiteration}{code}
Le code sera ainsi répété nbiteration fois. Les déclarations de variables
sont séparées par des virgules. Un déclaration prend la forme :
-
variable = valeurinitiale + increment
Elle est utile notamment pour le dessin de figures.
- Exemple (doc package) :
-
-
\setlength{\unitlength}{1cm}
\small
\begin{picture}(8,1)(0,-.5)
\put(0,0){\vector(1,0){8}}
\multido{\i=0+1, \n=0+0.25}{8}{%
\put(\i,-.1){\line(0,1){.2}}
\put(\i,-.2){\makebox(0,0)[t]{\n}}}
\end{picture}
%%%% fin exemple %%%%
29.62 A quoi servent les commandes savebox ?
Il existe les commandes :
- \newsavebox{ma_boîte} pour déclarer une boite
- \sbox{ma_boîte}{contenu} pour remplir ma_boite
- \savebox{ma_boîte}[lagr][pos]{contenu}
pour remplir une boite de largeur lagr et de position pos
- \usebox{ma_boîte} pour appeler le contenu de ma_boite
- lrbox est l'environnement équivalent à sbox
- Exemple :
-
-
\newsavebox{\maboite}
\sbox{\maboite}{\textbf{Alcatel Alsthom Recherche}}
\usebox{\maboite} se situe à Marcoussis. Je travaille à
\usebox{\maboite} depuisldots...
%%%% fin exemple %%%%
ce qui donne :
Alcatel Alsthom Recherche | se situe à Marcoussis. Je travaille à Alcatel Alsthom Recherche depuis ldots
29.63 Comment résoudre certaines incompatibilités de packages ?
Il arrive parfois lorsque plusieurs packages sont utilisés simultanément
que des macros différentes portent le même nom, ou que certaines macros
perturbent le fonctionnement d'autres macros. Dans certains cas le
problème peut se résoudre en changeant l'ordre d'appel des packages.
- Exemple (J.P. Drucbert) :
-
Le paquetage psboxit définit des commandes \psboxit
qui engendrent \special{ps: ...}. Le problème vient
de ce deux-points. Si vous chargez psboxit.sty AVANT babel (option
french), pas de problème, le deux-points est un caractère ordinaire
(other) lors de la déclaration de la macro \psboxit
et donc le \special écrira bien un ``:``.
Par contre si psboxit.sty est chargé APRES babel (option french),
le deux-points est alors un caractère actif au moment de la déclaration
de la macro \psboxit, et le \special
n'écrira pas un deux-points, mais un espace insécable (en fait une
macro interne de babel) et un :, d'où les erreurs. C'est un cas classique
de catcodes pas très bien gérés (en fait psboxit.sty devrait sauver
le catcode de : , donner la catégorie other au caractère :, définir
\psboxit, puis restaurer le catcode). %%%% fin
exemple %%%%
29.64 Qu'est ce que Lollipop ?
C'est un jeu de macro de V. Eijkhout, destiné à faciliter l'écriture
de macros TEX. Il est disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/lollipop/.
29.65 J'ai un problème avec babel !
En tentant d'utiliser babel, j'obtiens l'erreur suivante:
-
! Undefined control sequence.
\add@accent ...l \mathchardef \accent@spacefactor
\spacefactor }\accent #1 #...
l.3 \begin{document}
Le problème est connu et a été corrigé par babel le 19 août 1999.
Si vous ne pouvez pas mettre à jour votre paquetage de babel, utilisez
le cache-bogue suivant, à mettre dans le préambule (donation de Javier
Bezos):
-
\makeatletter
\let\accent@spacefactor\relax
\makeatother
Vous pouvez également ajouter la ligne suivante dans vos entêtes:
\usepackage{t1enc}
En effet, le problème ne se manifeste pas en codage T1.
29.66 Qu'est ce que cette FAQ ?
- quelques 660 url, dont:
- plus de 390 url sur ctan;
- et quelques 270 url externes;
- quelques litres de café;
- beaucoup de sueur;
- de nombreux CDs usés.
Chapter 30 Remerciement et Contributions
Je [mpk] remercie vivement les personnes qui ont
contribué de près ou de loin à l'élaboration de cette FAQ. Je remercie
également les personnes qui me soutiennent et m'encouragent.
Je [bb] tiens à remercier les personnes qui m'ont envoyé des patchs
ou des correctifs sur cette faq, et qui ont à vrai dire beaucoup plus
travaillé que moi.
La liste des contributions ci-après se veut aussi complète que possible.
Si vous avez été oublié, n'hésitez pas à me contacter.
Contributions [ depuis le 15/07/99 ]
- Arnaud Launay
- Antoine Chambert-Loir
- Maurice Diamantini
- Philippe Pham
- Frédéric Petit
- Jean-Dominique Orvoen
- Éric Depardieu
- Benoît Rivet
- Nadine Manset
- Nicolas Corréard
- Denis Roegel
- Julien Mudry
- François Lesage
- Jean Dezert
- Stéphane Pion
- Jean-Baptiste Marchand
- André Allavena
- Eugen Dedu
- Youness Naji
- Emmanuel Gureghian
- Jean-Philippe Rey
- Sebastien Jean
- Dominic Mitchell
- Andriamasinoro Fenintsoa
- Françoise Pinsard
- Cyril Banderier
- Nicolas Deschaume
- Olivier Houix
- Olivier Debré
- François Pennaneac'h
- Yvon Henel
- Jean-Pierre Coulon
- Michel Bovani
- Stéphane Lepolozec
- Gilles Leborgne
- Jean-Marc Lasgouttes
Bibliography
- [1]
-
P. Abrahams, K. Berry, and K. Hargreaves.
TEX for the impatient.
Addison Wesley, 1990.
- [2]
-
b. Bringhurst.
The Elements of Typographic Style.
- [3]
-
M. Baudoin.
Apprends LATEX.
- [4]
-
B. Bayart.
Joli manuel pour .
- [5]
-
G. Blanchard.
Pour une sémiologie de la typographie.
Rencontres de Lure.
- [6]
-
A. Borde.
TEX by example: A Beginner's Guide.
Academic Press, 1992.
- [7]
-
Dreyfus and Richaudeau.
La chose imprimée.
Retz, 1985.
- [8]
-
V. Eijkhout.
TEX by Topic.
- [9]
-
V. Gramet et J.P. Regourd.
Objectif LATEX.
Masson, 1995.
- [10]
-
M. Goossens.
, un apercu.
- [11]
-
M. Goossens, F. Mittelbach, and A. Samarin.
The LATEX companion.
Addison Wesley, 1994.
- [12]
-
M. Goossens, S. Rahtz, and F. Mittelbach.
The LATEX Graphics Companion.
- [13]
-
G. Gratzer.
Math into LATEX : An Introduction to LATEX and
AMS-LATEX.
Birkhauser, Boston, 1996.
- [14]
-
M. Herrb.
The not so short introduction to .
- [15]
-
D. E. Knuth.
The TEXbook.
Addison Wesley, 1984.
- [16]
-
D. E. Knuth.
TEX: The Program.
Addison Wesley, 1986.
- [17]
-
D.E. Knuth.
Metafont.
Addison Wesley Longman.
- [18]
-
H. Kopla and P.W. Daly.
A Guide to , document preparation for beginners and
advanced users.
Addison Wesley, 1995.
- [19]
-
T. Lachand-Robert.
La maîtrise de TEX et LATEX.
Masson, 1995.
- [20]
-
L. Lamport.
LATEX reference manual.
Addison Wesley.
- [21]
-
L. Lamport.
LATEX, a Document Preparation System.
Addison Wesley, 1994.
- [22]
-
L. Lamport.
LATEX, a Document Preparation System.
Addison Wesley, 1ère édition.
- [23]
-
H. E. Meier.
Le développement des caractères.
Syntax Press, Suisse.
- [24]
-
Imprimerie Nationale.
Lexiques des règles typographiques en usage à l'imprimerie
nationale.
3ème édition edition, 1990.
- [25]
-
T. Oetiker.
The not so short introduction to (Version
Fran caise).
- [26]
-
Y. Perousseaux.
Manuel de typographie élémentaire.
1995.
- [27]
-
D. Salomon.
The advanced TEX book.
Springer Verlag, 1995.
- [28]
-
S. Sawyer and S. Krantz.
LATEX, a Document Preparation System.
CRC Press, 1995.
- [29]
-
N. Schwarz.
Introduction to TEX.
Addison Wesley, 1989.
- [30]
-
R. Seroul.
Le petit livre de TEX.
Interéditions, 1989.
- [31]
-
C. Simian.
LATEX, Manuel utilisateur simplifié.
CNRS.
- [32]
-
W. Snow.
TEX for the beginner.
Addison Wesley, 1992.
- [33]
-
J. Warbrick.
Essential LATEX.
File translated from
TEX
by
TTH,
version 3.01. On 19 Nov 2001, 18:13.
|