Apprentissage et pratique de LATEX

ou juste avant la balise de fermeture -->

 

 

10% de réduction sur vos envois d'emailing --> CLIQUEZ ICI

Retour à l'accueil, cliquez ici

ou juste avant la balise de fermeture -->

Source : http://www.math.jussieu.fr/~mpg/lm204/files/cours.pdf

Module ????? de la licence math-info Apprentissage et pratique de LATEX Manuel P???????-G?????? ??? semestre ????–????Licence Ce document est placé sous la licence libre GNU Free Documentation Licence ?.? : vous êtes libres de l’utiliser, le di?user et le modi?er, sous réserve de conserver une licence compatible. Pour plus de détails, voir le ?chier licence.txt dans les sources du document, disponibles à l’adresse http://people.math.jussieu.fr/~mpg/lm204/files/sources.zip.Préambule LATEX est un système de préparation de documents qui occupe une position dominante parmi les mathématiciens pour la réalisation de cours, feuilles d’exercices, notes de travail, articles de recherche... Les raisons de son omniprésence sont, outre sa capacité à mettre convenablement en forme les formules mathématiques les plus compliquées, la qualité professionnelle du résultat (tant pour le texte que les mathématiques) permettant une publication directe, mais surtout sa façon de concevoir un document structuré, en séparant son fond (le sens du texte) de sa forme (la mise en pages) et en déchargeant l’auteur de tâches fastidieuses, lui permettant ainsi d’atteindre une grande productivité. En dehors du milieu mathématique universitaire, LATEX a aussi sa place. Il est utilisé par des scienti?ques de toutes disciplines et certains enseignants en mathématiques du secondaire, pour ses performances dans la composition des mathématiques. Certains linguistes et « littéraires » l’apprécient pour son excellente gestion de document complexes, munis par exemple de lourds appareils de notes. Quelques éditeurs généralistes l’utilisent de préférence à des outils de PAO pour produire plus rapidement des documents structurés ; des banques et grandes compagnies l’exploitent pour mettre en forme automatiquement et avec une bonne qualité des documents issus de bases de données. Malgré ces nombreux succès, LATEX reste trop souvent perçu comme un outil de spécialiste. Une des raisons est sa di?culté d’apprentissage. Celle-ci est en partie réelle : d’une part, sa méthode de préparation des documents, séparant code source et résultat, n’est pas intuitive pour qui n’a pas une certaine culture informatique, et elle se prête peu à un auto-apprentissage sans document de référence. En?n, de part son histoire, LATEX ne forme pas un tout cohérent, et son univers peuplé de modules et de programmes auxiliaires, souvent encore trop éloigné des standards actuels, peut dérouter. Mais une partie des di?cultés d’apprentissage est plus environnementale qu’intrinsèque. En e?et, on « apprend » souvent LATEX sur le tas, à la va-vite, pour produire un mémoire, forcément à rendre pour hier, en recopiant des recettes trouvées ça et là, chez un collègue ou sur internet. Sur ce point, LATEX ne se distingue pas des autres outils ou disciplines : on l’apprend mieux et plus vite en suivant un cours structuré et en prenant le temps de progresser étape par étape, que tout seul et dans l’urgence. Par ailleurs, LATEX a beaucoup évolué au cours des dernières années. Il est par exemple capable de produire des documents PDF exploitant les diverses possibilités de ce format. De nombreux modules généralistes ou spécialisés fournissent des solutions simples à des problèmes autrefois compliqués. Les (bonnes) pratiques évoluent, tenant compte de l’expérience accumulée. Apprendre LATEX sur le tas en recopiant des exemples à droite à gauche ne permet pas de pro?ter de ces progrès : on se contente souvent de la première solution, fut-elle très approximative, qui semble « marcher » sur le moment, et qui deviendra vite une (mauvaise) habitude. On risque ainsi de rencontrer plus tard des problèmes inattendus, ou tout simplement de ne pas atteindre le maximum en termes d’e?cacité ou de qualité du résultat. f-preface.tex r??? – ????-??-?? iiiPréambule r??? – ????-??-?? Pour toutes ces raisons, je suis extrêmement heureux d’avoir l’occasion cette année, grâce notamment au dynamisme et à la disponibilité de certains collègues, de donner ce cours, que j’espère structuré et bien informé, dans le cadre d’un module la deuxième année de licence. De telles initiatives sont à ma connaissance rares en France, et pourtant me semblent très utiles, tant la capacité à communiquer, notamment par le biais de documents électroniques soignés, est importante aujourd’hui dans le milieu scienti?que (mais pas seulement). L’outil informatique, censé faciliter de nombreuses tâches, est déroutant ou rebutant pour certains. Dans le domaine de la typographie, il a longtemps été une source d’appauvrissement et de baisse de qualité. Au contraire, LATEX représente, dans son domaine, un exemple d’outil e?cace, relevant le dé? de rendre plus simple et plus rapide la production de documents, en conservant une qualité typographique à la hauteur de la tradition des compositeurs au plomb. J’espère vous en convaincre au long de ce cours. Bien sûr, l’e?cacité de LATEX ne se comprend vraiment que par la pratique. Il est indispensable, en lisant ce cours, de mettre en application les éléments présentés. Pour cela, les exercices accompagnant le cours sont un bon point de départ. Ils sont en général accompagnés de corrigés détaillés, et comportent parfois des compléments de cours, qui ne seront pas toujours repris dans ce polycopié. Mais les exercices sont souvent assez réducteurs : la seule façon de vraiment pratiquer LATEX est de mettre en forme de vrais documents. En e?et, les techniques présentées dans ce cours ne sont que des outils, dont le but est de servir votre document, et qu’il faut savoir utiliser à bon escient. Je vous souhaite autant de plaisir à lire ce cours que j’en ai eu à l’écrire et à l’enseigner. Toutes vos remarques ou questions sont les bienvenues à l’adresse mpg@math.jussieu.fr. Remerciements Trop brièvement, j’aimerais remercier les personnes suivantes. Pour l’organisation du module : Omer A??????, Dominique L? B??????, Laurent K???????, Muriel T?????. Pour LATEX au CIES Jussieu : Céline C????????, Benjamin C?????, Ismaël S???????, Michel L?????. Du plateau ?C ou assimilé : Jérôme G??????, Julien C????????, Julien G?????? et bien d’autres. Les contributeurs de fr.comp.text.tex, en particulier Jean-Côme C?????????? et Denis B??????. Pour leur réactivité et leur intérêt, je remercie tous les étudiants ayant suivi le module. Et bien sûr, pour avoir créé TEX et l’avoir donné au monde, Donald K????. Merci ! iv f-preface.tex r??? – ????-??-??Table des matières Préambule iii ? Prise de contact ? ?.? Présentation du module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ? ?.?.? Organisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ? ?.?.? Contenu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ? ?.? Présentation de LATEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ? ?.?.? Possibilités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ? ?.?.? Particularités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ? ?.? Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ? ?.?.? Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ? ?.?.? Mac OS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ? ?.?.? Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ? ?.? Premiers documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ? ?.? Bases théoriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ? ?.?.? Commandes, arguments, environnements . . . . . . . . . . . . . . . . . . ? ?.?.? Espaces et ?ns de ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ? ?.? Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Contenu des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ? Le mode texte ?? ?.? Caractères et symboles particuliers . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Caractères réservés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Accents et symboles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Franchouillardises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Interlude : documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Changements de fonte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Modèle théorique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Tout sauf la taille . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? La taille . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Le reste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Alignement du texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Espaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ? Structure du document ?? ?.? Classes de documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Notes marginales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? f-tables.tex r??? – ????-??-?? vTable des matières r??? – ????-??-?? ?.?.? Notes de bas de page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Titre et résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Titre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Structure globale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Références et liens hypertexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Références croisées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Liens hypertexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Structure de la page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ? Les modes mathématiques ?? ?.? Découvertes des modes mathématiques . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Les deux modes mathématiques . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Outils de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Points plus délicats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Distinguer texte et mathématiques . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Styles mathématiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Limites et grands opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Espaces en mode mathématique . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Délimiteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Constructions mathématiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Petites constructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Alignements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Environnements numérotés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Formules numérotées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Environnements de type théorème . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ? Révisions et création de commandes ?? ?.? Rappels et compléments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Source minimal et encodages . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Messages d’erreur courants . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Dé?nitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Commandes simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Commandes avec arguments . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Commandes avec arguments optionnels . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Environnements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Redé?nitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Couleurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ? Figures ?? ?.? Inclusion d’images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? La question des formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Inclusion simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Options d’inclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? vi f-tables.tex r??? – ????-??-??r??? – ????-??-?? Table des matières ?.? Placement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Habillé par le texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Flottant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Une astuce classique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Autres ?oritures graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Rotations et mises à l’échelle . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Encadrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Une police de symboles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ? Tableaux ?? ?.? Tableaux simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Les bases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Colonnes de type paragraphe . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Placement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? En mode mathématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Techniques plus avancées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Matériel automatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Colonnes personnalisées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Fusion de cellules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Ajustement de la largeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Couleurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Aspects esthétiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ? Compléments divers ?? ?.? Note technique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Code informatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Outils de LATEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Avec le module fancyvrb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Aparté : le verbatim dans des arguments . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Avec le module listings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Concentré d’orthotypographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Références pour aller plus loin . . . . . . . . . . . . . . . . . . . . . . . . . ?? ? Éléments de programmation ?? ?.? Rappels sur les dé?nitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Compteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Longueurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Boîtes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Boîtes horizontales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Boîtes verticales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Réglures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Aparté : espacement dans les tableaux . . . . . . . . . . . . . . . . . . . . . ?? ?.?.? Remplissage de boîtes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? f-tables.tex r??? – ????-??-?? viiTable des matières r??? – ????-??-?? ?? Personnalisation ?? ??.? Polices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ??.? En-têtes et pieds de page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ??.? Titres de chapitres et sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ??.? Listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ??.? Flottants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?? Présentations vidéoprojetées ?? viii f-tables.tex r??? – ????-??-??Listes des exemples, tables, sources et ?gures Liste des exemples ?.? Extrait de source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ? ?.? Exemple d’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ? ?.? Quelques accents, cédilles et ligatures . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Famille, graisse et forme de fonte . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Changements de taille et interligne . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Changements de couleurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Quelques possibilités du module soul . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Les trois types de listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Environnements d’alignement du texte . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Note de bas de page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Bibliographie et citations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Liens avec hyperref . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Les deux modes mathématiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Indices, exposants, fractions et racines . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Sommes et intégrales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Déclaration et usage d’un nouvel opérateur . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Styles mathématiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Opérateur et placement des bornes . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Taille automatique des délimiteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Alignements mathématiques moyens . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Environnements de type théorème . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Dé?nitions simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Utilisation de \xspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Commandes avec arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Commande avec argument optionnel . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Dé?nitions d’environnements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Inclusion de graphiques avec rotation . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Recadrage et découpage d’image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Habillage dans le coin en haut à droite . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Image en fenêtre dans le texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Rotation et dilatation de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Cadres plus sophistiqués . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Boîtes colorées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? f-tables.tex r??? – ????-??-?? ixListes des exemples, tables, sources et ?gures r??? – ????-??-?? ?.? Utilisation d’une police de symboles . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Types de colonnes simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Tableaux avec des ?lets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Matériel inter-colonnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Colonnes de type paragraphe et alignement . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Mauvais espaces horizontaux avec array . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Matériel automatique pré- et post-colonne . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Gestion des retours à la ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Fusion horizontale de cellules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Fusion verticale de cellules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?? Tableaux de largeur ?xe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?? Trop de couleurs dans un tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.?? Une utilisation raisonnable de la couleur . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Commande et environnement de base pour le verbatim . . . . . . . . . . . . . . . ?? ?.? Usage simple de fancyvrb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Verbatim : quand l’imitation vaut mieux que l’original . . . . . . . . . . . . . . . . ?? ?.? Reconnaissance de mots-clé du langage C . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Modi?cation de la représentation d’un compteur . . . . . . . . . . . . . . . . . . . ?? ?.? Utilisation d’un compteur personnel . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Paramétrage de \fbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Mesure de mots pour un texte à trous . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Utilisation de boîtes de largeur nulle . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Utilisation de \framebox et \raisebox . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Une boîte verticale dans une boîte horizontale . . . . . . . . . . . . . . . . . . . . . ?? ?.? Réglures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ??.? En-têtes et pieds de page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ??.? Listes personnalisées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? Liste des tables ?.? Commandes pour les caractères réservés . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Commandes fournies par french de babel . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Famille, graisse et forme de fonte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Tailles de fontes relatives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Environnements et commandes d’alignement. . . . . . . . . . . . . . . . . . . . . . ?? ?.? Fontes disponibles en mode mathématiques . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Commandes d’espace en mode mathématique . . . . . . . . . . . . . . . . . . . . . ?? ?.? Petites constructions mathématiques . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Modes de compilation et formats graphiques . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Espacement autour des signes de ponctuation . . . . . . . . . . . . . . . . . . . . . ?? x f-tables.tex r??? – ????-??-??r??? – ????-??-?? Listes des exemples, tables, sources et ?gures ?.? Compteurs de base de LATEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Unités de longueur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ??.? Exemples de polices avec leurs noms . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ??.? Polices fantaisistes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? Liste des code sources ?.? Source minimum compilable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ? ?.? Tout petit document en français . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ? ?.? Source développé de l’exemple ?.? . . . . . . . . . . . . . . . . . . . . . . . . . . . . ? ?.? Structure d’un document en classe article . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Fichier source de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ??.? Création et gestion des types de ?ottants dans ce poly . . . . . . . . . . . . . . . . . ?? Liste des ?gures ?.? Centres de rotation possibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Comment LATEX voit les caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? ?.? Les trois dimensions des boîtes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ?? f-tables.tex r??? – ????-??-?? xi? Prise de contact ?.? Présentation du module ?.?.? Organisation Le module est organisé en ?? séances de cours-TP de deux heures. En moyenne, sur chaque séance, une heure sera consacrée au cours et l’autre à la pratique, sauf la dernière séance consacrée à l’examen. Les exercices seront en général trop longs pour être terminés en une heure et sont destinés à être ?nis à la maison. Ils contiennent parfois des questions volontairement di?ciles ou demandant un travail de recherche personnelle ; ces questions sont généralement signalées et il est conseillé de les garder pour la ?n. Le découpage en chapitres du présent polycopié correspond en première approximation au découpage du cours en séances ; parfois, l’ordre sera légèrement modi?é pour clari?er l’exposition. L’évaluation des connaissances consistera en deux parties obligatoires et une optionnelle. ?. Un document libre (rapport) à préparer à la maison, individuellement ou par binôme. Les modalités précises sont décrites dans un document séparé ¹. ?. Un examen pratique sur machine, en temps limité. ?. Un devoir à la maison optionnel. L’examen, comme le devoir à la maison et la plupart des exercices, consiste en un document à reproduire aussi ?dèlement que possible (hormis le ?ligrane « à reproduire » lui-même). La dernière version de ce polycopié, ainsi que les exercices, leurs corrigés, les supports de pré- sentation utilisés en cours, et di?érents documents d’accompagnement (aide-mémoire, liste de symboles mathématiques, etc.) sont disponibles à l’adresse suivante : http://people.math.jussieu.fr/~mpg/lm204/files/ Une page voisine ² comporte par ailleurs la progression du cours séance par séance, avec chaque fois que c’est possible l’indication des parties correspondantes des di?érents documents de réfé- rence. Une bibliographie séparée ³ à été distribuée. ?.?.? Contenu Le but du cours n’est en aucun cas de tout vous apprendre sur LATEX : d’une part parce que c’est impossible, d’autre part parce que certaines de ses possibilités ne vous seront sans doute pas utiles immédiatement. En revanche, les objectifs sont les suivants : – Vous fournir un socle solide de connaissances de bases, si possible exempt de mauvaises habitudes. Ce cours se veut tour d’horizon relativement neutre des possibilités de LATEX. ?. http://people.math.jussieu.fr/~mpg/lm204/files/doc-eval-rapport.pdf ?. http://people.math.jussieu.fr/~mpg/lm204/prog.html ?. http://people.math.jussieu.fr/~mpg/lm204/files/doc-biblio.pdf c-intro.tex r??? – ????-??-?? ?? Prise de contact r??? – ????-??-?? – Vous donner des pistes pour être en mesure par la suite de continuer seul votre apprentissage. Les cinq premiers chapitres du cours fournissent le minimum vital pour composer la plupart des documents scienti?ques ne comportant pas d’autre élément complexe que des formules mathématiques. Les chapitres suivants présentent soit des éléments plus spéci?ques (?gures, tableaux, listings, présentations) soit des éléments généralistes d’usage moins courant, ou approfondissent certains points évoqués précédemment. ?.? Présentation de LATEX ?.?.? Possibilités Même s’il est principalement connu pour ses possibilités mathématiques, qui sont en e?et pratiquement illimitées, LATEX est adapté à la plupart des types de documents. En particulier, il prend soin de beaucoup de détails concernant le texte : césure, justi?cation, ligatures... Par ailleurs, il est capable de produire directement des graphiques sophistiqués (possibilité qui ne sera pas étudiée en cours, faute de temps). Pour quelques exemples, je renvoie aux transparents 4. Observez les e?ets de texte, la parfaite intégration des mathématiques au reste du texte, les possibilités d’arrangements complexes de formules... Pour d’autres exemples, ce cours lui-même, ainsi que les trois livres et deux documents électroniques donnés en référence sont bien sûr réalisés avec LATEX. Par ailleurs, même si nous n’aurons pas trop le temps d’approfondir cet aspect, LATEX est aussi un langage de programmation complet. C’est ce qui lui confère une partie de sa puissance : d’une part parce que de nombreuses personnes ont ainsi écrit (et publié) des modules étendant ses possibilités, que nous pouvons utiliser, mais aussi parce qu’il est possible de programmer soi-même certains aspects de ses documents pour les automatiser ou les rendre plus aisément modi?ables. ?.?.? Particularités Il est important de réaliser que LATEX est un système de préparation de documents qui n’a essentiellement rien à voir avec un traitement de texte (à part la ?nalité commune : produire un document mis en forme). Dans un traitement de texte de type Word ou OpenO?ce Writer, le texte est mis en forme en direct pendant que vous le saisissez. En LATEX, le processus est asynchrone : vous saisissez dans un ?chier votre texte accompagné d’instructions de mise en forme 5 et vous demandez de temps en temps à LATEX d’exécuter ces instructions. Un peu de vocabulaire : le ?chier dans lequel vous écrivez votre texte et les instructions de mise en forme, dont l’extension est .tex, est appelé le ?chier source ou, par élision, le source. Le processus qui le transforme en un document visualisable ou imprimable (en général au format PDF) est appelé compilation, par analogie avec des langages informatiques comme le C. Si vous n’avez pas une certaine habitude des langages informatiques compilés, il est essentiel de bien comprendre la distinction entre le source et le document ?nal. Ces deux ?chiers sont complémentaires : le PDF est la forme distribuable, le source est la forme modi?able. La compilation, qui transforme le source LATEX en document PDF, n’est pas un processus réversible. Il est comparable à l’impression d’un document Word : le document imprimé est lisible sans ordinateur, mais ?. http://people.math.jussieu.fr/~mpg/lm204/files/01-intro.pdf ?. On dit que LATEX est un langage de balisage. Il est sur certains points comparables au couple HTML & CSS. ? c-intro.tex r??? – ????-??-??r??? – ????-??-?? ?.? Présentation de LATEX n’est plus modi?able comme l’est le ?chier .doc. Cette séparation est heureuse car elle permet de bien distinguer les rôles : pour l’auteur, le .tex, pour les lecteurs, le .pdf. Interrompons un moment cette présentation un peu théorique pour regarder un extrait d’un source LATEX (on verra bientôt à quoi ressemble un source complet). On voit sur l’exemple ?.? comment le texte est entremêlé d’instructions de mise en forme comme \textit pour mettre en italique, ou $...$ pour délimiter les fragments de formule, ^ pour mettre en exposant, de commandes pour obtenir des symboles particuliers comme un point centré. Des \textit{maths} ici : $2^2 = 2 \cdot 2 = 2 + 2$. Des maths ici : ? ? = ? · ? = ? + ?. E?????? ?.? — Extrait de source Un autre point sur lequel LATEX distingue plus les rôles qu’un traitement de texte ordinaire est que les tâches de saisie des instructions, et d’exécution de ces instructions, sont séparées. Le programme nommé latex (ou plus précisément, pdflatex) lit le ?chier .tex et produit le ?chier .pdf, mais il faut un autre programme, appelé éditeur de texte, pour produire le source .tex. Sur l’exemple ?.?, LATEX assure la transformation de la partie de gauche en la partie de droite, mais il faut un logiciel distinct pour produire la partie de gauche. Ainsi, contrairement à un traitement de texte qui fait tout (saisie et exécution des instructions), un environnement de travail LATEX est divisé en au moins deux programmes. En fait, c’est encore pire : le programme pdflatex lui-même a besoin de nombreux ?chiers supplémentaires (classes et modules, comme on le verra dans un instant) pour fonctionner, et parfois d’autres programmes auxiliaires (par exemple pour produire un index ou une bibliographie). Tous ces ?chiers et programmes sont généralement réunis au sein d’une distribution TEX. Pour travailler avec LATEX, il vous faut donc installer une distribution TEX et un éditeur adapté à LATEX (voir section ?.? pour les détails). Une partie du développement de LATEX, dont témoigne la nombre impressionnant de modules disponibles, est rendu possible par son statut de logiciel libre 6 : chacun est libre d’étudier son fonctionnement en détail, de l’améliorer, de le redistribuer. Tous les logiciels recommandés dans ce cours sont des logiciels libres ; vous n’avez pas besoin de payer pour les utiliser le plus légalement du monde. En?n, concluons cette section sur les particularités de LATEX en évoquant quelques un de ses défauts. – LATEX est plus di?cile à apprendre seul qu’un traitement de texte, et il faut plus de temps pour se sentir capable de faire ce que l’on veut avec. – Il est parfois di?cile à installer, un peu hétéroclite, et l’intégration entre les di?érents modules n’est pas toujours parfaite. – Pendant la phase de compilation, si votre source comporte des erreurs de syntaxe, les messages d’erreurs sont parfois délicats à comprendre. – Pour certains types particuliers de documents, le manque de retour visuel immédiat peut être gênant. ?. http://www.april.org/fr/articles/intro c-intro.tex r??? – ????-??-?? ?? Prise de contact r??? – ????-??-?? Le dernier point est intrinsèque, mais largement compensé par le fait que pour la plupart des types de documents, le mode de travail « source & compilation » est au contraire un avantage. Quant aux trois premiers points, j’espère que ce cours vous aidera à les surmonter. ?.? Installation Comme expliqué précédemment, pour travailler avec LATEX, on a besoin de deux éléments logiciels distincts : ?. une distribution TEX 7 ; ?. un éditeur de texte. L’éditeur de texte peut être extrêmement basique (le notepad de Windows su?t en théorie) mais il est préférable d’en utiliser un spécialement adapté à LATEX, qui proposera par exemple une mise en évidence des commandes, la possibilité de lancer la compilation et la visualisation du document sans quitter l’éditeur, un ?ltrage des messages d’erreur, etc. On appelle parfois IDE 8 un tel éditeur. Si l’éditeur est un programme relativement simple, la distribution est au contraire un ensemble important de programmes, occupant beaucoup d’espace disque. Pour cette raison, elles existent parfois en plusieurs versions de minimale à complète. Une version présentée comme minimale n’est en aucun cas su?sante pour tout ce qui sera vu dans ce cours. Il est recommandé de toujours installer la version complète. Il existe essentiellement deux ou trois distributions TEX, et un grand nombre d’éditeurs. Voyons maintenant quelques choix possibles et comment les installer suivant les plateformes. ?.?.? Windows On a le choix parmi les distributions TEX Live ? et MiKTEX ¹°. Pour les éditeurs, le plus classique est TeXnicCenter ¹¹, mais TeXmaker ¹² est aussi un très bon choix. (Deux autres bons éditeurs sont disponibles, mais ne sont pas libres : ils s’agit de LeD et WinEDT.) Un document séparé ¹³ décrit en détails l’installation d’un environnement MiKTEX & TeXnicCenter sous windows. Ce choix n’est pas forcément meilleur que les autres mais correspond à la con?guration utilisée en TP. Pour l’installation de cette con?guration, il est essentiel de suivre le document au moins jusqu’à la section ?.? incluse. ?.?.? Mac OS X Bien qu’il y ait en principe plusieurs choix, l’un se distingue ici très clairement : il s’agit de la distribution MacTEX ¹4, dérivée de TEX Live et munie d’un installateur spéci?que pour Mac OS. En ?. LATEX est en fait lui-même une extension d’un autre système, appelé TEX. Une distribution contient en général le programme TEX et tous ses dérivés. ?. Pour integrated development environment, soit environnement de développement intégré. ?. http://tug.org/texlive/ ??. http://ww.miktex.org/ ??. http://www.toolscenter.org/ ??. http://www.xm1math.net/texmaker/index_fr.html ??. http://people.math.jussieu.fr/~mpg/lm204/files/doc-install-miktex+txc.pdf ??. http://tug.org/mactex/ ? c-intro.tex r??? – ????-??-??r??? – ????-??-?? ?.? Premiers documents outre, elle intègre un éditeur, TeXShop, et constitue donc à elle seule un environnement complet de travail. D’autres bons éditeurs, ainsi qu’un peu plus de documentation, sont fournis dans le paquet supplémentaire MacTEXtras ¹5, qui mérite donc d’être installé. Signalons de suite un point technique mais facile à régler : il est conseillé, dès la première utilisation de TeXShop, d’aller dans le menu TeXShop, préférences, onglet document, et dans la liste dé- roulante « encodage », de choisir latin? (ou son synonyme iso-????-?) ou éventuellement UTF-?. Si vous choisissez cette dernière option, il vous faudra changer l’option passée à inputenc, comme expliqué dans la note ?? (page ?), par rapport à certains exemples. ?.?.? Linux La distribution de référence est ici TEX Live (il faut mieux oublier teTEX qui se fait vraiment vieille). Installez-la de préférence depuis le gestionnaire de votre distribution Linux. Elle est souvent présentée sous la forme de plusieurs paquets : si un paquet nommé texlive-full existe, installez-le. Sinon, installez au moins tous les paquets dont le nom contient latex ou recommended ; parfois certains paquets particuliers ne comportent pas le mot texlive dans leur nom même s’ils en font partie : c’est par exemple le cas de latex-xcolor, latex-beamer, cm-super et lmodern sous Debian et Ubuntu. Concernant l’éditeur, le plus courant et sans doute un des meilleurs est Kile, mais vous pouvez aussi utiliser TeXmaker, également à installer depuis le gestionnaire de paquets de votre distribution Linux. Sous la plupart des distributions, l’encodage par défaut des éditeurs sera l’UTF-?. Si vous conservez cet encodage, il vous faudra penser à changer l’option passée à inputenc, comme expliqué dans la note ?? (page ?), par rapport à certains exemples. Sinon, vous pouvez sélectionner latin? ou son synonyme iso-????-? comme encodage par défaut, généralement dans la partie « éditeur » du menu des préférences de votre IDE. (Pour Kile ?.? : menu con?guration, con?gurer Kile, puis dans la partie éditeur, ouvrir/enregistrer et liste encodage. Pour TeXmaker ?.? : menu options, con?gurer TeXmaker, partie éditeur, liste encodage.) ?.? Premiers documents Voyons maintenant à quoi ressemble un source LATEX complet. Le source ?.? est insu?sant pour un usage réel, mais juste assez complet pour compiler correctement. Il produit un document d’une page qui comporte le seul texte « Hello, world! ». \documentclass{minimal} \begin{document} Hello, world! \end{document} S????? ?.? — Source minimum compilable On voit ici que les mots précédés de \ sont des commandes qui n’apparaissent pas dans le document mais sont interprétées par LATEX. Les mots entourés d’accolades qui suivent une commande ??. http://tug.org/mactex/mactextras.html c-intro.tex r??? – ????-??-?? ?? Prise de contact r??? – ????-??-?? sont les arguments de cette commande. La structure d’un source comporte quelques contraintes : ?. La première ligne doit toujours être une déclaration de classe de document, c’est-à-dire utiliser la commande \documentclass avec un argument. ?. Tout le texte destiné à apparaître dans le document produit doit être contenu entre les balises \begin{document} et \end{document}. La partie précédent le \begin{document}, ici réduite à la première ligne, est appelée préambule du document ; celle qui suit jusqu’au \end{document} constitue le corps du document ; en?n tout ce qui suit le \end{document} est ignoré. \documentclass[a4paper]{article} \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \usepackage{amsmath, amssymb} \usepackage[french]{babel} \newcommand\abs[1]{\lvert #1\rvert} % valeur absolue \begin{document} Un document plus réaliste, avec du texte pour commencer. Puis un deuxième paragraphe avec une équation $\abs{x} = r_0$ à l’intérieur. Et un dernier paragraphe ? \end{document} S????? ?.? — Tout petit document en français Présentons maintenant un exemple un peu plus réaliste de très court document LATEX écrit en français. Le source ?.? illustre quelques éléments de la syntaxe de LATEX. Vous n’avez pas besoin de tout comprendre pour le moment, mais voici quelques points à retenir. ?. Il existe plusieurs classes de documents, dont la plus courante pour de courts document est article : c’est celle que nous utiliserons presque tout le temps pour les exemples et les exercices. ?. La classe de document peut prendre des options entre crochets, comme ici a4paper. On utilisera systématiquement cette option, la taille de papier par défaut étant sinon le format letter américain. ?. On peut, dans le préambule uniquement, charger des modules ¹6 qui étendent les possibilités de LATEX ou modi?ent son comportement, avec la commande \usepackage. ?. Pour pouvoir saisir des caractères accentués, on a besoin du module inputenc. L’option à lui passer dépend de l’éditeur utilisé et de son réglage. Pour simpli?er, j’écrirai toujours latin1 : c’est le seul réglage reconnu par TeXnicCenter, l’éditeur utilisé en cours. Si on utilise TeXShop, on prendra soin de le régler comme expliqué en section ?.?.? ; pour TeXmaker ou Kile, voir la section ?.?.?. ¹7 ??. Aussi appelés extensions, paquets ou en anglais packages. Dans tout ce cours, j’utiliserai « module » pour essayer d’écrire en français correct, mais l’anglicisme package reste le terme le plus couramment utilisé en général. ??. Cependant, a?n de laisser le choix libre, je propose toutes les solutions des exercices en latin? et en utf?. Si vous ? c-intro.tex r??? – ????-??-??r??? – ????-??-?? ?.? Premiers documents ?. Pour que les caractères accentués utilisés en Français apparaissent correctement dans le PDF et que LATEX puisse calculer automatiquement les coupures de mots, il faut charger le module fontenc avec l’option T1. ?. On peut charger d’autres modules spéci?ques, comme ici amsmath et amssymb qui étendent les possibilités mathématiques de LATEX. ?. On utilise en?n le module babel avec l’option french pour annoncer que le document produit est en Français, ce qui permet à LATEX de traduire certains titres produits automatiquement, de respecter certaines règles typographiques françaises, etc. ?. On peut en outre dé?nir des nouvelles commandes, comme ici \abs, que l’on peut ensuite utiliser dans le document comme toute autre commande standard de LATEX. ?. Le caractère % introduit un commentaire : tout ce qui le suit jusqu’à la ?n de la ligne est totalement ignoré par LATEX. Il sert soit à expliquer ce qui est fait dans le source, soit à masquer temporairement certains éléments, sans pour autant les e?acer du source. ??. En?n, les coupures de ligne au sein du source ne correspondent pas aux coupures de ligne dans le document ?nal : LATEX calcule celles-ci automatiquement pour bien remplir la zone de texte. Comme annoncé, vous n’avez pas besoin de tout comprendre de ce document maintenant. Par contre, retenez absolument que certaines options et certains modules sont obligatoires pour chaque document. Un source de base est disponible en ligne ¹8 (sinon, voir source ?.?) et je vous conseille fortement de vous en servir comme point de départ pour tous les documents en français que vous produirez. (Ne pas utiliser l’option a4paper et les trois modules chargés par cette base sera considéré comme une faute.) \usepackage{hyperref} Le \href{http://tug.org}{groupe d’utilisateurs de \TeX}. Le groupe d’utilisateurs de TEX. E?????? ?.? — Exemple d’exemple Par ailleurs, dans ce polycopié, tous les exemples supposeront que vous utilisez ce source de base, et ne signaleront que les modules supplémentaires à charger. De plus, pour économiser la place, le \begin{document} sera omis : tout est supposé être dans le corps du document, sauf les lignes précédées d’un ?let vertical, qui sont à ajouter au préambule de base. Ainsi, l’exemple ?.? représente en fait ¹? le source complet ?.?. Si vous voulez essayer les exemples du cours (ce qui est conseillé), vous devrez donc à chaque fois faire cette substitution qui devrait vite devenir un ré?exe. Il est maintenant recommandé d’essayer de compiler les sources ?.? et ?.?. Vous pouvez les copier-coller depuis la version PDF de présent polycopié. Si vous observez attentivement le résultat de la compilation de ces deux exemples, vous constaterez le numéro « ? » en bas de page du ?.? : c’est le numéro de page. LATEX (ou plus précisément, réglez votre éditeur sur UTF-? (ou que c’est son réglage par défaut), pensez à remplacer latin1 par utf8 dans chaque exemple ou corrigé qui fera appel à inputenc et à utiliser les ?chiers de solution dont le nom contient utf8. ??. http://people.math.jussieu.fr/~mpg/lm204/files/doc-source-base.tex ??. Pour être exact, il faut éventuellement remplacer latin1 par utf8, selon le réglage de votre éditeur. c-intro.tex r??? – ????-??-?? ?? Prise de contact r??? – ????-??-?? \documentclass[a4paper]{article} \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \usepackage[french]{babel} \usepackage{hyperref} \begin{document} Le \href{http://tug.org}{groupe d’utilisateurs de \TeX}. \end{document} S????? ?.? — Source développé de l’exemple ?.? la classe de document) gère automatiquement pour vous les détails comme la numérotation des pages. Essayez de changer la classe minimal en article dans le ?.?, vous verrez apparaître alors le numéro de page. ?.? Bases théoriques ?.?.? Commandes, arguments, environnements Reprenons maintenant de façon un peu plus méthodique certains éléments vus ci-dessus. LATEX est un langage de balisage : dans le source sont entremêlés le texte réel de votre document et des commandes pour le mettre en forme, sauf au tout début du document, dans le préambule, qui ne comporte que des instructions, comme le chargement de modules. Pour pouvoir donner des instructions à LATEX, certains caractères ont une signi?cation spéciale. En voici la liste complète : \ { } $ & # ^ _ ~ % Vous connaissez déjà certains d’entre eux, les autres seront présentés petit à petit. Ce sont les dix caractères qui n’apparaîtront pas tels quels dans le document si vous les saisissez simplement dans le source mais provoqueront plutôt des actions spéciales. Nous verrons au prochain chapitre comment les inclure dans un document. Le caractère \ sert à indiquer le début d’une commande. Les noms de commandes en LATEX sont de deux types : ?. Les commandes-mot sont les plus courantes : leur nom est constitué d’une ou plusieurs lettres. ?. Les commandes-caractère : leur nom est constitué d’un unique caractère qui n’est pas une lettre. Dans ce contexte, lettre signi?e l’un des ?? caractères non accentués de l’alphabet, et la casse (majuscule ou minuscule) compte : \abc et \Abc sont deux commandes distinctes. Un exemple de commande-caractère est la commande \% qui permet d’obtenir le caractère ?. Une commande peut prendre zéro, un, ou plusieurs arguments, normalement délimités par des accolades {...}. Certains arguments, comme les options de la commande \documentclass, sont optionnels : il peuvent être omis. Dans ce cas, ils sont délimités par des crochets carrés [...]. Dans tous les autres cas, le nombre d’argument d’une commande doit être respecté : ne pas passer ? c-intro.tex r??? – ????-??-??r??? – ????-??-?? ?.? Bases théoriques d’argument à une commande qui en attend provoquera des erreurs, parfois très étranges. Il faut aussi bien distinguer [...] et {...} qui ne sont pas interchangeables. Dans tout ce cours, on présentera ainsi les nouvelles commandes : \documentclass[?options?]{?classe?} Il est entendu que les arguments entre crochets peuvent être omis. Les éléments comme ?options? ne sont pas à saisir tels que, mais à remplacer par une valeur appropriée. Deux commandes sont particulières : \begin et \end. Utilisées conjointement sous la forme \begin{?env?} ?contenu? \end{?env?} elles dé?nissent un environnement dont le nom est ?env? et le contenu ?contenu?. Ainsi, on peut dire que le corps du document est le contenu de l’environnement {document}. À chaque fois que je ferai référence ainsi à un nom entre accolades, il s’agira du nom d’un environnement ²°. Ceci constitue l’essentiel de la syntaxe « régulière » de LATEX. Il existe quelques autres éléments syntaxiques un peu moins cohérents, que nous aurons le temps de découvrir plus tard. ?.?.? Espaces et ?ns de ligne Des règles particulières régissent les espaces en LATEX. Parfois surprenantes au début, elles sont en fait très pratiques à l’usage (sauf peut-être la première). Les voici. ?. Les espaces suivant une commande-mot sont ignorés. ?. Les espaces au début d’une ligne sont ignorés. ?. Plusieurs espaces successifs sont équivalents à un seul espace. ?. Un retour à la ligne est équivalent à un espace. La première règle demande un peu d’attention. Par exemple ²¹ pour écrire que « LATEX c’est bien », il faut saisir par exemple \LaTeX{} c’est bien, car la version naïve \LaTeX c’est bien donne le mauvais résultat « LATEXc’est bien ». Ici, les accolades vides ne produisent rien, mais assurent que l’espace qui les suit n’est plus « mangé » par la commande-mot qui précède : je parlerai souvent de « protéger » l’espace pour désigner ce procédé. Les trois autres règles sont en fait tellement commodes qu’on les oublie vite. Comme on l’a vu, un retour à la ligne seul est équivalent à un espace. Deux retours à la ligne successifs (c’est-à-dire une ligne vide dans le source) sont considérés comme délimitant un paragraphe ²². Plusieurs lignes vides successives sont équivalentes à une seule ligne vide. ??. La réciproque est peut-être fausse : il m’arrivera d’omettre les accolades quand le contexte indique assez clairement qu’il s’agit d’un environnement. ??. Comme en exercice, j’introduis parfois en exemple des nouvelles commandes, comme ici celle servant à composer le logo LATEX. Quand elles sont su?samment simples, elles sont alors considérées comme connues pour la suite, même si elles ne sont jamais formellement présentées ailleurs. C’est le cas ici. ??. On peut aussi séparer les paragraphes par la commande \par ; je le ferais souvent dans les exemples pour gagner de la place, mais dans la pratique une ligne vide est bien plus courante. c-intro.tex r??? – ????-??-?? ?? Prise de contact r??? – ????-??-?? Vu qu’un retour à la ligne dans le source est interprété comme un espace (ce qui est très pratique en fait), pour provoquer un retour à la ligne dans le document, le plus simple est de changer de paragraphe en laissant une ligne vide dans le source. Ceci insère aussi un retrait d’alinéa au début du paragraphe suivant. On verra au prochain chapitre comment provoquer un retour à la ligne qui ne soit pas un changement de paragraphe. On y apprendra aussi les commandes servant à laisser des espaces vides horizontalement ou verticalement : pour l’instant, retenez qu’il est vain de chercher à atteindre ce résultat en laissant plusieurs espaces ou plusieurs lignes vides dans le source. ?.? Exercices Il n’y a pas d’exercice formel pour ce chapitre : votre travail pour cette semaine consiste à installer LATEX sur votre ordinateur personnel si vous en possédez un, ou à vous familiariser avec l’installation LATEX disponible dans les salles libre-service de l’université. Vous devez savoir compiler et visualiser un document simple. Vous êtes encouragés à partir du source ?.? et à le modi?er. De façon générale, une attitude active, consistant à essayer de « jouer » avec LATEX pour voir ce que vous pouvez en faire, au-delà de la simple résolution des exercices proposés, ne pourra vous être que béné?que. ?.?.? Contenu des exercices Les exercices sont fournis dans des archives nommées exos-?nn?.zip (ou exos+cor-?nn?.zip si la correction est incluse), contenant tous les ?chiers utiles, où ?nn? est le numéro de la séance ou le nom (dm, exam). Ils consistent en général en un document à reproduire, qui contient parfois des indications sur l’exercice, ou des informations intéressantes, mais parfois seulement du texte de remplissage. Les types de ?chiers potentiellement présents dans une archive sont : – exo-?nn?.pdf : le document à reproduire, en pdf ; – brut-?nn?-?enco?.pdf : le texte brut de l’exercice, prêt à être copie-collé, fourni dans di?é- rents encodages (choisir latin1 pour TeXnicCenter) ; – parfois des images utiles pour reproduire le document ; – sol-?nn?-?enco?.tex : le source complet du document à reproduire, prêt à compiler (et à modi?er), mais sans commentaires ; – cor-?nn?.pdf : le source du document à reproduire, accompagné de commentaires. Les solutions et corrigés des exercices sont une source importante d’information, car ils illustrent et expliquent les notions vues en cours sur des documents complets : n’hésitez pas à vous en inspirer lors de la rédaction de vos documents. Par ailleurs, le code des exemples est souvent mal présenté pour économiser la place : celui des solutions est un bien meilleur exemple sur ce point (à mon avis important). En?n, les corrigés comportent parfois des informations qui ne sont pas reprises dans le cours. ?? c-intro.tex r??? – ????-??-??? Le mode texte ?.? Caractères et symboles particuliers ?.?.? Caractères réservés On a déjà présenté (section ?.?.?) les dix caractères réservés par LATEX pour des usages particuliers, et promis d’expliquer comment les obtenir dans le document. Il est temps de tenir promesse : voici donc les commandes, table ?.?. Comme on le constate, LATEX ne propose pas de commande pour obtenir certains caractères en mode texte. On doit faire appel au module textcomp pour disposer des commandes de l’avantdernière colonne, et être en mode mathématique pour utiliser celles de la dernière colonne (les modes mathématiques seront vus au chapitre ?). Je rappelle que faire appel au module textcomp signi?e placer la ligne \usepackage{textcomp} dans le préambule du document. Si vous oubliez de le faire et essayez d’utiliser quand même une des commandes fournies par ce module, vous obtiendrez le message d’erreur unde?ned control sequence, qui signi?e en gros « commande non dé?nie ». En général, vous obtenez ce message d’erreur soit quand vous avec oublié de charger un module, soit quand vous avez fait une faute de frappe dans le nom d’une commande. ?.?.? Accents et symboles À part les caractères réservés que nous venons de voir, vous pouvez saisir tous les autres caractères directement dans le source. Tous ? Non ! Une poignée d’irréductibles résiste, essentiellement pour deux types de raison : Caractère Usage LATEX textcomp Math \ commandes \textbackslash \backslash { argument ou \{ \textbraceleft \{ } groupe \} \textbraceright \} ? mode math \$ \$ & alignements \& ? dé?nitions \# ˆ exposant \^{} _ indice \_ ˜ espace insécable \~{} \textasciitilde ? commentaire \% T???? ?.? — Commandes pour les caractères réservés c-texte.tex r??? – ????-??-?? ??? Le mode texte r??? – ????-??-?? ?. Ils n’existent pas dans l’encodage d’entrée ¹ utilisé. ?. Vous ne savez pas les saisir sur votre clavier. Dans le premier cas, on trouve par exemple le symbole de l’euro qui n’existe pas en latin1 ². Dans le deuxième cas... ça dépend de vous et de votre clavier. Dans les deux cas, la stratégie reste la même : utiliser des commandes pour obtenir ces symboles. Il y a tout d’abord des commandes d’accent, généralistes, pour obtenir tous les caractères accentués. Ces commandes, ainsi que celles servant à obtenir les ligatures orthographiques usuelles, ont des noms assez faciles à retenir (voire deviner). L’exemple ?.? présente les plus importantes d’entre elles. \’A, \‘A, \^A, \”A, \dots\par \’E, \’I, \’i, \’n, \dots\par \c Ca me fend le c\oe ur ! Tch\”u\ss! Á, À, Â, Ä, ... É, Í, í, n, ... Ça me fend le cœur ! Tchüß! E?????? ?.? — Quelques accents, cédilles et ligatures Quelques commentaires sur cet exemple : observez l’utilisation de \par à la ?n des deux première lignes pour changer de paragraphe (et donc revenir à la ligne) dans le document. Remarquez aussi la commande \dots, qui produit un résultat plus élégant que trois points à la suite : « ... » est plus lisible que « ... ». En?n, des détails syntaxiques : dans \’A, on a une commande \’ et son argument A. Comme l’argument est réduit à une lettre, on n’est pas obligé de l’entourer d’accolades, mais si on le désire on peut écrire \’{A}. C’est d’ailleurs sans doute plus clair pour \c{C}a. Ici, il faut faire attention à ne pas écrire \cCa sans espace, car LATEX y verrait une commande nommée cCa. C’est dans des exemples comme c\oe ur que la règle disant que les espaces sont avalés est, pour une fois, pratique. D’autres symboles ne dérivent pas d’une lettre. Ils sont alors obtenus par des commandes spéci- ?ques. Par exemple, pour le symbole euro, le module textcomp fournit la commande \texteuro. On peut obtenir un symbole euro d’apparence di?érente (celui fournit avec les polices par défaut de LATEX n’est pas très joli) avec la commande \EUR du ³ module marvosym 4. D’autres symboles sont disponibles, bien plus qu’il n’est possible de présenter ici. Le document de référence pour tous les symboles disponibles sous LATEX est symbols-a4.pdf 5. Il est important en consultant ce document de faire attention aux modules à charger pour disposer des commandes indiquées. Nous verrons tout bientôt (section ?.?.?) comment accéder aux documents de référence. En?n, certains caractères particuliers s’obtiennent sans même faire appel à une commande : LATEX peut automatiquement « mélanger » deux ou plusieurs caractères 6 pour en obtenir un autre. ?. C’est celui qu’on passe en paramètre à inputenc. ?. À ceux qui seraient tentés d’utiliser à la place l’option utf8 pour éviter ce problème (ce qui est au demeurant une bonne idée), je rappelle qu’il ne su?t pas de changer l’option d’inputenc, mais qu’il faut aussi changer le réglage de son éditeur de texte, et que ceci n’est malheureusement pas possible sous TeXnicCenter. ?. Il faut donc écrire \usepackage{marvosym} dans le préambule pour avoir le droit d’utiliser cette commande. ?. http://ctan.org/pkg/marvosym ?. http://mirror.ctan.org/info/symbols/comprehensive/symbols-a4.pdf ?. Un tel mélange s’appelle une ligature. ?? c-texte.tex r??? – ????-??-??r??? – ????-??-?? ?.? Caractères et symboles particuliers Exemple Résultat \og guillemets \fg « guillemets » M\up{me}, D\up{r} M??, D? 1\ier, 1\iere, 1\ieres ???, ???, ???? 2\ieme 4\iemes ?? ??? \No 1, \no 2 N? ?, n? ? 20~\degres C, 45\degres ?? °C, ??° \bsc{M. Durand} M. D????? \today ? septembre ???? T???? ?.? — Commandes fournies par french de babel Par exemple, on obtient un tiret moyen « – » avec deux tirets à la suite -- et un long « — » avec trois (mais ça ne va pas plus loin). Une autre ligature utile est celle qui permet d’obtenir des guillemets “anglais” : on saisit pour cela ‘‘anglais’’. Par contre, en Français, on utilisera plutôt des guillemets « français » : ce qui fournit une bonne transition vers la prochaine section. ?.?.? Franchouillardises En plus de traduire certains textes automatiques, d’assurer une césure 7 correcte des mots, et d’aider au respect de quelques règles orthotypographiques propres au Français, l’option french 8 de babel fournit aussi quelques commandes utiles, résumées par la table ?.?. Comme on le sait, les commandes-mot comme \ier ont tendance à avaler les espaces qui les suivent, de sorte que le 1\ier jour donne « le ???jour ». Il faut penser à protéger l’espace en saisissant le 1\ier{} jour pour obtenir le résultat correct « le ??? jour ». Les commandes fournies par french permettent d’éviter cet inconvénient et de restaurer automatiquement l’espace lorsqu’il est nécessaire, à condition de charger le module xspace auparavant. Pour cela, décommentez ? la ligne ? du source minimal ¹° proposé. (Ceci sera systématiquement utilisé dans les corrigés des exercices.) ?.?.? Interlude : documentation Je l’ai déjà dit, vous ne saurez jamais tout de LATEX. Il est donc important de prendre l’habitude de consulter des documents de référence, et j’en citerai souvent. La plupart des documents que je cite sont disponible en ligne, mais aussi présents sur votre disque dur : ils font partie de la distribution TEX. Pour les localiser, chaque distribution fournit un outil. Sous MiKTEX, il s’appelle mthelp, sous TEX Live c’est texdoc. Dans les deux cas, l’utilisation est la même : il s’agit de taper, en ligne de ?. Vous l’aurez remarqué, LATEX coupe automatiquement certains mots en ?n de ligne. Les règles concernant la césure (l’action de couper les mots) dépendant fortement de la langue. ?. Synonyme des options francais (sans cédille) et frenchb (pour french babel). J’utiliserai souvent frenchb par habitude, car les trois n’ont pas toujours été synonymes. ?. C’est-à-dire, retirez le signe % présent en début de ligne. ??. http://people.math.jussieu.fr/~mpg/lm204/files/doc-source-minimal.tex c-texte.tex r??? – ????-??-?? ??? Le mode texte r??? – ????-??-?? commande ¹¹ l’une des commandes suivantes : mthelp ??chier? mthelp ?module? texdoc ??chier? texdoc ?module? Vous pouvez ainsi rechercher soit un ?chier dont vous connaissez le nom, comme symbols-a4. pdf, soit de la documentation sur un module dont vous connaissez le nom, comme babel. Par exemple, pour rechercher la documentation de babel sous TEX Live, vous tapez texdoc babel dans une ligne de commande. Pour rechercher le ?chier symbols-a4.pdf sous MiKTEX, tapez mthelp symbols-a4. Si pour une raison ou une autre vous n’arrivez pas à localiser la documentation sur votre disque dur, vous pouvez essayer en ligne. Le site de référence pour tous les modules LATEX et la plupart des documents le concernant est le CTAN ¹². Il dispose d’une page de recherches ¹³. De plus, chaque module LATEX est recensé dans un catalogue : des informations (dont parfois un lien vers la documentation) sur chaque module sont disponibles à l’adresse http://ctan.org/pkg/?nom?. Par ailleurs, dans la version PDF du présent polycopié, le nom d’un module est en général un lien vers cette page de description, de même que le nom d’un ?chier que je présente pour la première fois est souvent un lien vers sa version sur le CTAN. À titre d’exercice, vous pouvez rechercher dans symbols-a4 comment produire le symbole du Yen (?). Faites-le vraiment, chercher des choses dans un document tou?u n’est pas si facile au début et il faut vous y habituer. ?.? Changements de fonte ?.?.? Modèle théorique Pour LATEX, une police est déterminée par ? paramètres ¹4 logiquement indépendants : la famille, la graisse, le forme, et la taille. Ici, « logiquement indépendant » signi?e qu’on peut demander à LATEX de changer le taille sans qu’il change la graisse, mais cela ne signi?e pas que toutes les combinaisons existent nécessairement dans une fonte donnée. Contrairement à certains logiciels qui encouragent à utiliser beaucoup de polices au sein d’un même document, LATEX ne propose par défaut que trois familles : une famille romaine (avec empattements) qui est en général la police principale, une famille sans empattements (dite aussi sans sérif) et une de type machine à écrire, généralement à chasse ?xe (c’est-à-dire que tous les caractères ont la même largeur). ?.?.? Tout sauf la taille Parmi les quatre paramètres vus ci-dessus, la taille est un peu à part. La table ?.? montre comment changer les trois autres. Les polices par défaut de LATEX sont utilisées pour les illustrations. ??. Pour en ouvrir une sous Windows, enfoncez simultanément la touche Windows du clavier et la lettre R, puis saisissez cmd dans la boîte de dialogue. Sous Mac ou Linux, vous avez probablement une icône « terminal » quelque part. ??. http://ctan.org/ ??. http://ctan.org/search.html ??. C’est un peu faux car il faudrait aussi considérer l’encodage, mais c’est une notion technique heureusement inutile ici. On a déjà bien assez à faire avec l’encodage d’entrée. ?? c-texte.tex r??? – ????-??-??r??? – ????-??-?? ?.? Changements de fonte Famille \textrm{} \rmfamily romain \textsf{} \sffamily sans empattements \texttt{} \ttfamily chasse fixe Graisse \textmd{} \mdseries graisse normale \textbf{} \bfseries gras Forme \textup{} \upshape droit \textit{} \itshape italique \textsl{} \slshape penché \textsc{} \scshape petites capitales T???? ?.? — Famille, graisse et forme de fonte. Les valeurs par défaut de ces paramètres sont en général : famille romaine, forme droite et graisse moyenne. On peut à tout moment revenir à ces valeurs par défaut avec la commande \normalfont qui n’a?ecte pas la taille. Comme vous le constatez, chacune des commandes de changement de fonte présentée existe sous deux formes : une commençant par \text, qui prend un argument et n’agit que sur son argument, et une forme dite déclarative, qui agit sur toute la suite du texte jusqu’à ordre contraire. Pour être plus précis, la forme déclarative agit jusqu’à la ?n du groupe courant. Le moyen le plus simple de dé?nir un groupe est d’utiliser une paire d’accolades, à condition qu’elles en servent pas déjà à autre chose, comme à délimiter l’argument d’une commande. Il faut alors bien prendre de garde de placer l’accolade ouvrante avant la commande déclarative dont on veut limiter l’action. Les environnements dé?nissent naturellement des groupes. On pourra donc aussi les utiliser comme délimiteurs de la portée d’une commande déclarative. On verra de tels exemples dans le corrigé de l’exercice ?. L’exemple ?.? montre la technique utilisant des accolades, et illustre comment les paramètres peuvent se combiner. Comme on le constate, les certaines combinaisons « ne marchent pas », par exemple il n’y a pas de petites capitales en style machine à écrire. Dans ce cas, LATEX ignore une des commandes. Un {\bfseries mot gras \textit{et italique} aussi}. Retour à la normale. \texttt{Machine \textbf{à écrire}.} \textsc{Petites capitales \textbf{grasses}, à \texttt{chasse fixe} ?} Un mot gras et italique aussi. Retour à la normale. Machine à écrire. P?????? ????????? ???????, ? chasse fixe ? E?????? ?.? — Famille, graisse et forme de fonte Dans l’exemple ?.?, il aurait été plus naturel d’utiliser \textbf à la place de \bfseries. Par contre, il faut savoir que les commandes à argument ne peuvent pas servir pour des changements de fonte durant plus d’un paragraphe. C’est une sécurité censée vous aider à détecter les accolades fermantes oubliées : en cas d’oubli, vous obtenez le message d’erreur suivant. c-texte.tex r??? – ????-??-?? ??? Le mode texte r??? – ????-??-?? Taille \tiny taille \scriptsize taille \footnotesize taille \small taille \normalsize taille \large taille \Large taille \LARGE taille \huge taille \Huge taille T???? ?.? — Tailles de fontes relatives ! Paragraph ended before \text@command was complete. \par l.18 bla} L’intérêt d’un tel message d’erreur est que le numéro de ligne indiqué est proche du lieu où vous avez probablement oublié une accolade. En?n, il existe une commande particulière pour changer la forme de fonte courante : la commande \emph sert à mettre du texte en valeur, en passant en italique si l’on était en droit et réciproquement. Il est conseillé de l’utiliser plutôt qu’une commande de mise en forme directe, lorsque qu’on voudra insister sur un mot comme ici. De façon générale, dès qu’on saura comment dé?nir de nouvelles commandes et environnements (chapitre ?), il faudra éviter de faire apparaître les commandes de changement de fonte directement dans le document, et ne les utiliser que dans la dé?nition d’autres commandes sé- mantiques. Nous y reviendrons en temps voulu. ?.?.? La taille Les commandes proposées par LATEX pour changer de taille n’existent contrairement aux autres que sous forme déclarative. En e?et, un changement de taille concerne rarement un mot isolé, mais plutôt toute une portion de texte. Les commandes disponibles sont listées dans la table ?.?. La taille de texte normale est donnée par \normalsize, qui est indépendant de \normalfont. Cette taille est ?xée par une option de classe de document. Par défaut, cette taille est de ?? points dans la classe article. Les options 11pt et 12pt sont disponibles. Par exemple, pour ?xer une taille principale de ?? points pour l’ensemble du document, on écrira \documenclass[a4paper, 11pt]{article} comme première ligne du préambule. Toutes es autres commandes s’adapteront alors : \large avec une taille de base de ?? points est un peu plus grand que \large avec une taille de base de ?? points, etc. ?? c-texte.tex r??? – ????-??-??r??? – ????-??-?? ?.? Changements de fonte Pour disposer de tailles de base plus variées (ce qui est rarement utile en fait), on devra remplacer la classe article par la classe extarticle. On dispose alors des nouvelles options 8pt, 9pt, 14pt, 17pt et 20pt pour la taille de base. Ainsi, pour un livret écrit assez petit, on commencera son source par \documenclass[a5paper, 9pt]{extarticle} si le livret est imprimé sur du papier A?. (Écrire si petit sur du papier A? n’est guère raisonnable.) Ce modèle de tailles de fonte (une taille de base, et des commandes de taille relatives à cette dernière) est très pratique pour la plupart des documents, car il permet des changements faciles et cohérents. Cependant, on a parfois besoin de spéci?er une taille absolue (par exemple pour obtenir un titre en très gros, ou réaliser une a?chette). \fontsize{?corps?}{?interligne?} \selectfont La commande \fontsize permet d’indiquer un corps (un taille) de fonte en points ; il faut alors aussi préciser la taille de l’interligne (l’espace vertical entre la base de deux lettres de lignes consé- cutives). Une règle approximative est de choisir un interligne de ???? du corps : par exemple, \fonsize{40}{48} \selectfont pour écrire en taille ??. Il ne faut pas oublier de faire suivre \fontsize de \selectfont pour que les changements prennent e?et. Les commandes de changement de taille au sein du document, qu’elles soient relatives comme \large ou absolue comme \fontsize, modi?ent aussi l’espace entre les lignes : pour \fontsize, c’est le rôle du deuxième argument, pour les autres c’est automatique. Un point auquel il faut prêter attention si l’on veut que l’interligne soit pris en compte est de bien terminer le paragraphe avant de revenir à la taille normale. Pour cela, on aura intérêt à terminer le paragraphe par un \par plutôt que par une ligne vide de façon à placer celui-ci avant l’accolade fermante qui délimite la ?n du changement de taille, comme illustré par l’exemple ?.?. Si par contre on utilise des environnements comme center, flushleft et flushright (vus plus loin, section ?.?) pour délimiter l’action du changement de taille, on n’a aucune précaution particulière à prendre, car ces environnements délimitent aussi un paragraphe. Voir le corrigé de l’exercice ? pour un exemple correct d’utilisation de cette technique. {\tiny Un petit paragraphe de texte écrit en tout petit avec un interligne incorrect.}\par {\tiny Un petit paragraphe de texte écrit en tout petit avec un interligne correct.\par} Un petit paragraphe de texte écrit en tout petit avec un interligne incorrect. Un petit paragraphe de texte écrit en tout petit avec un interligne correct. E?????? ?.? — Changements de taille et interligne ?.?.? Le reste Le dernier paramètre déterminant l’apparence d’un texte, en plus de la famille, la graisse, la forme et la taille de police, est sa couleur, au moins pour les documents électroniques. LATEX ne permet pas tout seul de gérer la couleur, mais le module xcolor fournit les commandes nécessaires. c-texte.tex r??? – ????-??-?? ??? Le mode texte r??? – ????-??-?? \textcolor{?couleur?}{?texte?} {\color{?couleur?} ?texte long?} Comme pour les commandes de changement de fonte normales, on dispose des deux formes : avec argument ou déclarative. Pour la forme déclarative, il faut penser à utiliser des accolades comme ci-dessus, ou à pro?ter d’un environnement pour restreindre l’action de la commande. À tout moment, on peut revenir à la couleur normale avec la commande déclarative \normalcolor. Il y a plusieurs noms de couleurs prédé?nis : pour en avoir une liste complète, consulter la documentation d’xcolor (voir sec. ?.?.? comment la trouver), puis aidez-vous des signets pdf ou des liens cliquables de la table des matières pour arriver rapidement à la section ? « colors by name ». Par défaut, seuls les noms de la section ?.? sont dé?nis. Vous pouvez mélanger entre elles des couleurs existantes de la façon suivante : blue!30!white donne un mélange de ??? de bleu et ??? de blanc. Nous verrons à la section ?.?.? comment dé?nir de nouveaux noms de couleur. Ces possibilités sont présentées sur l’exemple ?.? : là aussi, il serait plus naturel d’utiliser \textcolor les deux fois, \color n’a été choisie la deuxième fois que pour illustrer sa syntaxe une peu étrange. Du \textcolor{red}{rouge} flashy.\par {\color{red!30!black} Moins} flashy. Du rouge ?ashy. Moins ?ashy. E?????? ?.? — Changements de couleurs Sur certaines installations vieilles ou incomplètes, xcolor n’existe pas. On peut alors utiliser color à la place : les commandes citées ci-dessus restent les mêmes, ainsi que les noms des couleurs de base, mais certaines possibilités, comme le mélange de couleurs, ne sont pas disponibles. En?n, outre les changements de fontes et de couleurs, il est également possible d’appliquer quelques autres mises en forme au texte, comme le soulignement. Ce dernier est à éviter autant que possible. Il est très utilisé dans les documents manuscrits ou dactylographiés car c’est un des seuls moyen de mise en valeur qui existe dans ces cas. Avec LATEX (ou un traitement de texte classique), on dispose de tellement d’autres moyens d’expression typographiques qu’il faut mieux se passer du soulignement, souvent peu élégant (problèmes de lettres à jambages, d’interligne, ...) Ceci dit, par souci de complétion, citons le module soul qui permet entre autres de souligner des portions de texte. Il fournit aussi des commandes pour d’autres e?ets, comme le texte barré ou interlettré (c’est-à-dire avec un espace supplémentaire entre chaque lettre : cette mise en forme peut être utile pour des titres par exemple), illustrées par l’exemple ?.?. \usepackage{soul} \ul{Souligné} \par \st{Barré} \par \so{Interlettré} Souligné Barré I n t e r l e t t r é E?????? ?.? — Quelques possibilités du module soul ?.? Listes Nous connaissons désormais les commandes pour mettre en forme des fragments de texte, souvent de l’ordre de quelques mots, et traduire ainsi sa structure à petite échelle. Voyons maintenant ?? c-texte.tex r??? – ????-??-??r??? – ????-??-?? ?.? Alignement du texte quelques éléments de structure à moyenne échelle. Le plus important est la structure de liste, qui se décline en LATEX (comme en HTML) en trois variantes : liste à tirets, liste numérotée, et liste descriptive. Dans les trois cas, la liste elle-même est délimitée par un environnement : itemize pour une liste à tirets, enumerate pour une liste numérotée, et description pour une liste descriptive. Chaque élément, ou point, de la liste (y compris le premier) est précédé de la commande \item. Cette commande ne prend en général pas d’argument, mais on peut lui passer un argument optionnel entre crochets : dans le cas d’une liste à tirets ou numéroté, l’argument remplace le symbole de début d’item ou la numérotation ; dans le cas d’une liste descriptive, il est d’usage d’utiliser cet élément pour le nom du terme à décrire. Ces trois type de listes sont illustrés par l’exemple ?.? ; on peut les emboîter entre elles comme on le verra en exercices. Les trois types de listes sont : \begin{itemize} \item les listes à tirets ; \item les listes numérotées ; \item les listes descriptives. \end{itemize} Les trois types de listes sont : \begin{enumerate} \item les listes à tirets ; \item les listes numérotées ; \item les listes descriptives. \end{enumerate} Les trois environnement utiles sont : \begin{description} \item[itemize] pour les listes à tirets ; \item[enumerate] pour les listes numérotées ; \item[description] pour les descriptives. \end{description} Les trois types de listes sont : – les listes à tirets ; – les listes numérotées ; – les listes descriptives. Les trois types de listes sont : ?. les listes à tirets ; ?. les listes numérotées ; ?. les listes descriptives. Les trois environnement utiles sont : itemize pour les listes à tirets ; enumerate pour les listes numérotées ; description pour les descriptives. E?????? ?.? — Les trois types de listes Il est essentiel de penser à utiliser ces environnements plutôt que de mettre en forme le texte « à la main », à grand renfort de sauts de ligne forcés et autres. C’est particulièrement vrai pour les listes numérotées : LATEX s’occupe pour vous de maintenir les numéros dans l’ordre si vous ajoutez ou retirez des éléments de la liste. ?.? Alignement du texte Par défaut, LATEX fait en sorte que les bords gauche et droits du texte soient bien rectilignes : on dit que le texte est justi?é, ou pour être précis, justi?é à droite et à gauche. On peut changer ce comportement pour certaines parties du texte, soit par choix (page de titre ou autre mise en pages personnalisée, soit pour des raisons techniques : quand on écrit du texte sur une faible largeur, essayer de l’aligner des deux côtés produit souvent un résultat assez moche, et il vaut alors mieux choisir un autre alignement. c-texte.tex r??? – ????-??-?? ??? Le mode texte r??? – ????-??-?? On obtient du texte centré avec l’environnement {center}, aligné seulement sur la marge de gauche (on dit « au fer à gauche », ou encore « en drapeau ») avec {flushleft} en en?n aligné à droite avec {flushright}, comme le montre l’exemple ?.?. Par ailleurs, ces environnements laissent comme on le voit un petit espace avant et après, ce qui est en général nécessaire pour que le changement d’alignement ne soit pas choquant. Du texte d’exemple justifié à droite et à gauche. \begin{center} Un peu de texte d’exemple centré sur la ligne. \end{center} \begin{flushleft} Cette fois du texte d’illustration en drapeau. \end{flushleft} \begin{flushright} Et enfin une partie de texte au fer à droite. \end{flushright} Du texte d’exemple justi?é à droite et à gauche. Un peu de texte d’exemple centré sur la ligne. Cette fois du texte d’illustration en drapeau. Et en?n une partie de texte au fer à droite. E?????? ?.? — Environnements d’alignement du texte De même que les commandes de changement de fonte existent en deux formes (une commande à argument et une commande déclarative) on peut changer l’alignement avec un environnement comme on vient de le voir, mais aussi avec des commandes déclaratives. Tout ce qui a été dit précédemment sur les commandes déclaratives reste vrai, par exemple l’utilisation de groupes ou environnements pour limiter leur portée. La correspondance environnement-commande est donnée par la table ?.? : on prendra bien garde à l’inversion left/right : aligné à gauche est en e?et équivalent à « déchiré » (ragged) à droite. Environnement Commande center \centering flushleft \raggedright flushright \raggedleft T???? ?.? — Environnements et commandes d’alignement. Si l’on choisit d’utiliser une commande et non un environnement, il faut prendre garde à plusieurs points : par exemple, terminer le paragraphe avant que l’e?et de la commande ait cessé (comme dans le deuxième cas de l’exemple ?.? précédent) car sinon elle n’aura tout simplement aucun e?et. On peut aussi devoir ajouter un peu d’espace vertical avant et après. Pour ces raisons, il est recommandé de ne pas utiliser la forme commande et de préférer les environnements, sauf pour changer l’alignement à l’intérieur d’un autre environnement, ou bien dans la dé?nition d’un environnement. En?n, signalons un point subtil : les environnements comme center se comportent di?éremment selon qu’ils sont au milieu d’un paragraphe ou pas (c’est-à-dire selon qu’il sont ou non entourés de lignes vides) : ceci a?ecte l’espace vertical précédent et suivant le texte centré, et l’alignement du texte qui suit (présence ou absence du retrait d’alinéa). Ceci est bien sûr valable pour les deux autres environnements ; des exemples seront vus en exercices. ?? c-texte.tex r??? – ????-??-??r??? – ????-??-?? ?.? Espaces Je présente pour ?nir dans cette section, faute d’un meilleur emplacement, deux environnements utiles : {quote} et {quotation} qui sont prévus pour faire des citations, et dont l’e?et le plus visible est d’augmenter un peu la taille des marges de chaque côté, réduisant ainsi la largeur du texte. Les deux environnement sont quasiment identiques : le premier supprime le retrait d’alinéa au début de chaque paragraphe du texte cité, tandis que le deuxième le conserve. ?.? Espaces Comme on l’a vu à la section ?.?.?, LATEX traite à sa manière les espaces et retours à la ligne dans le source. En particulier, pour obtenir un espace blanc important, que ce soit horizontalement (entre deux mots) ou verticalement (entre deux lignes), il est vain d’introduire plusieurs espaces ou retours à la ligne dans le source. Ceci est une bonne chose, car c’est une assez mauvaise habitude (même lorsqu’on utilise un traitement de texte classique) de procéder ainsi pour régler l’espacement. Il est bien plus naturel de spéci?er la longueur de l’espace à laisser blanc dans l’unité de son choix. \hspace?*?{?longueur?} \vspace?*?{?longueur?} Pour cela, LATEX propose les commandes \hspace et \vspace qui ont exactement la même syntaxe, et servent comme leur nom l’indique à insérer de l’espace respectivement horizontalement et verticalement. On utilise ainsi \hspace{3cm} pour laisser un blanc horizontal de ? centimètres, plutôt que d’essayer de le reproduire avec plusieurs espaces successifs. Les deux peuvent s’utiliser à n’importe quel endroit du texte, mais \vspace est surtout utile entre deux paragraphes : au sein d’un paragraphe, son e?et est parfois étrange. En LATEX comme en physique, une longueur est un nombre suivi d’une unité. Ici, nombre signi?e « nombre décimal », et le séparateur décimal (la « virgule ») est le point : la moitié de ? s’écrit 2.5. Les unités disponibles sont nombreuses, citons seulement pour le moment ¹5 les unités métriques mm et cm, l’unité anglo-saxonne in (pouce), les unités (typo-)graphiques pt et bp (deux dé?nitions di?érentes ¹6 du point) et en?n deux unités relatives : ex et em. Ces dernières dépendent la fonte courante (et en particulier de sa taille) : un ex est approximativement la hauteur d’un « x » minuscule, et un em la largeur d’un « M » majuscule. Elles sont commodes pour obtenir des espaces proportionnelles à la taille d’un mot ou la hauteur d’une ligne. Les distances négatives sont autorisées et servent à resserrer deux éléments, voire à créer des e?ets de surimpression si l’on resserre trop... Normalement, les espaces introduits par \hspace et \vspace disparaissent s’ils se trouvent en début ou ?n de page ou de ligne et c’est la plupart du temps une bonne chose. Quand on veut vraiment laisser un espace blanc à un de ces endroits, il faut utiliser \hspace* ou \vspace* : par exemple, \vspace*{10cm} juste après le début du document laisse un espace de ?? centimètres (en plus de la marge) en haut de la première page. On découvre sur cet exemple un nouvel élément de la syntaxe de LATEX : certaines commandes peuvent être suivies d’une étoile qui modi?e leur comportement. Dans ce cours, \commande?*? ??. La liste complète des unités que connaît TEX, avec leur valeur, est donnée par la table ?.? si vous y tenez. ??. Le premier vaut ?/??, ?? pouces, le second ?/?? pouces. Le pt est l’unité utilisée par LATEX pour mesurer par exemple les tailles de fontes ; le bp est la dé?nition du point utilisée par la plupart des logiciels graphiques pour mesurer les images. c-texte.tex r??? – ????-??-?? ??? Le mode texte r??? – ????-??-?? désignera toujours une commande qui peut être suivie d’une étoile optionnelle. On dira que \commande* est la version étoilée de \commande. On ne contrôle d’habitude pas les changements de ligne ni les changements de page : LATEX s’occupe de calculer leurs emplacements optimaux. Si on souhaite forcer un retour à la ligne, on pourra la faire avec la commande \newline ou \\. Dans certains contextes (texte centré), seul \\ fonctionnera. Ces deux commandes sont à utiliser avec une grande parcimonie : on a tendance à les utiliser à tort et à travers quand on débute, alors qu’elles sont en fait assez rarement utiles. La plupart du temps, soit le retour à la ligne est automatique (début de liste, de formule horstexte, etc.) soit on veut en fait changer de paragraphe (ce qui se fait en laissant une ligne vide dans le source.) Un des cas où l’usage de \\ se justi?e toutefois est dans un court texte centré si l’on souhaite décider des coupures de ligne pour obtenir une forme de paragraphe équilibrée. Il est également peu fréquent de devoir imposer les coupures de pages à la main. Pour les rares cas où cela sera utile, il existe les commandes \newpage, \clearpage et \pagebreak. Les deux premières laissent un espace blanc à la ?n de la page, alors que la troisième tente de préserver l’alignement en bas. La di?érence entre les deux premières est plus subtile ¹7 ; en général, utilisez \clearpage, ou encore n’utilisez aucune des trois, car elles ne sont pas souvent utiles. \stretch{?force?} Il existe en LATEX des longueurs spéciales, qui peuvent s’étirer en fonction de l’espace disponible sur la page. La façon la plus simple d’y accéder est d’utiliser la commande \stretch, par exemple dans l’argument de \vspace : l’espace ainsi obtenu s’étirera alors autant que possible, poussant vers le bas de la page tout ce qui le suit. Si plusieurs espaces élastiques sont présents sur une même page, ils se partageront l’espace disponible de façon proportionnelle à leur ?force?. Ceci est pratique pour placer par exemple un texte au tiers de la page : on insère \vspace*{\stretch{1}} avant et \vspace*{\stretch{2}} après. Pour des exemples, voir les exercices et notamment le ?. ??. En fait, \clearpage force LATEX à placer immédiatement tous les ?ottants en attente (voir section ?.?.? pour la notion de ?ottant). ?? c-texte.tex r??? – ????-??-??? Structure du document Même si, une fois imprimé sur du papier, un document a globalement une structure linéaire (dans le sens où on peut le lire dans l’ordre de la première à la dernières page), la structure logique du document est souvent bien plus complexe : on a en général une structure arborescente en chapitres, sections, sous-sections, etc., voire des morceaux de texte séparés comme des annexes ou des notes, auxquelles il est fait référence dans le corps du texte. Ce chapitre présente les outils proposés par LATEX pour gérer ces structures : ils sont en général assez puissants dans le sens où on obtient beaucoup avec peu de commandes, et sans avoir à se soucier de détails comme maintenir à jour la numérotation. ?.? Classes de documents Une classe de document est quelque chose que l’on peut passer comme argument principal de la commande \documentclass présent au début de chaque source LATEX. Nous connaissons pour l’instant la classe minimal (source ?.?) que l’on n’utilise en pratique jamais, et la classe article (source ?.?) qui est la plus courante pour des documents pas trop longs. Les deux autres classes standard sont report, prévue pour des documents un peu plus longs (quelques dizaines de pages), et la classe book, qui convient pour réaliser des livres complets. La classe de document détermine certains aspects de l’apparence du document, comme la pré- sence ou non du numéro de page (absent avec minimal, présent avec toutes les autres) et sa place (centré en bas de page, sur un côté en en-tête, etc.), la présence ou non d’en-têtes de pages... Par ailleurs, elle détermine en partie les commandes de sectionnement disponibles. Chaque classe de document accepte une ou plusieurs options, que l’on met toutes entre crochets, séparées par des virgules, entre le \documentclass et le nom de la classe entre accolades. Vous connaissez déjà les options a4paper, 10pt, 11pt et 12pt. Je n’en dis pas plus pour l’instant sur les particularités des classes et les options disponibles : elles seront présentées au fur et à mesure tout au long de ce chapitre. ?.? Notes ?.?.? Notes marginales \marginpar{?note?} La façon la plus simple de placer une note dans la marge est d’utiliser la commande \marginpar, Ceci est un exemple de note marginale. qui prend en argument le texte à placer dans la marge. On peut l’utiliser dans le cours du texte ou entre deux paragraphes. La note sera placée à peu près à la même hauteur que la commande dans le texte : LATEX a la possibilité de la déplacer un peu pour éviter des problèmes, par exemple si plusieurs notes se suivent, ou qu’on est trop près du bas de la page pour placer le texte en entier. c-struct.tex r??? – ????-??-?? ??? Structure du document r??? – ????-??-?? Ceci est un Signalons de suite un problème courant avec les notes marginales : l’alignement. En e?et, par exemple de note marginale. défaut le texte de la note est justi?é à droite et à gauche (voir ?.?), ce qui pose souvent problème vu la faible largeur de la marge : certains espaces sont démesurément étirés comme dans l’exemple ci-contre, ce qui est assez moche, et fait d’ailleurs grincher LATEX, qui émettra des messages comme Underfull \hbox (badness 10000) in paragraph at lines 35--35 []\EU1/MinionPro(0)/m/n/10.95 Ceci est un où le numéro à la ?n ¹ de la première ligne du message indique la ?n du \marginpar incriminé dans le source, et le texte à la ?n ² de la deuxième ligne (ici « Ceci est un ») est le texte présent sur la ligne mal remplie. (Voir aussi la section ?.?.?.) Ce problème admet une solution simple : il su?t de demander à LATEX d’aligner à gauche le texte de la note, comme il a été fait dans le premier exemple de cette section. Pour cela, le plus simple est d’insérer la commande \raggedright au début du texte de la note ; il s’agit d’un cas où la commande est plus pratique que l’environnement. L’e?et de la commande est automatiquement limité à la note et ne se propagera pas au reste du texte. Par défaut, les notes marginales se trouvent dans la marge de droite. On peut inverser le côté des notes avec la commande \reversemarginpar ; cette commande agit comme un commutateur : elle inverse le coté de toutes les notes qui suivent, jusqu’au prochain \reversemarginpar ou la ?n du document s’il n’y en a plus d’autre. twoside \marginpar[?texte si à gauche?]{?texte si à droite?} J’ai légèrement menti ci-dessus en disant que les notes sont dans la marge de droite : ce n’est vrai que pour les documents que LATEX considère comme étant en recto simple. C’est le cas par exemple de tous les documents en classe report ou book. En classe article, on peut forcer une mise en page recto/verso avec l’option de classe twoside. (À l’inverse, dans les classes qui sont par défaut en recto/verso, on peut imposer le recto simple avec l’option oneside.) Attention, cette notion de recto/verso est indépendante de la façon dont le document sera réellement imprimé : vous pouvez parfaitement imprimer en recto/verso en classe article sans pour autant avoir l’obligation d’utiliser l’option twoside. En fait, ces options ont pour but de dire à LATEX si la mise en page des pages paires et impaires doit être identique ou non : par exemple dans ce polycopié ³ les pages impaires portent en haut le nom de la section en cours et en bas le numéro de page à droite, tandis que les pages paires portent le nom du chapitre et le numéro de page à gauche. Dans un document de classe article, le numéro de page est centré sur toutes les pages. Revenons donc à nos moutons notes marginales. La commande \marginpar accepte un argument optionnel qui, dans le cas où le document est en recto-verso et où la note tombe sur une page paire (donc dans la marge de gauche), sera utilisé à la place de l’argument principal. Ceci est principalement utilise pour régler les problèmes d’alignement : on pourra par exemple écrire \marginpar[\raggedleft Texte de note.]{\raggedright Texte de note.} pour s’assurer que le texte de la note soit toujours correctement aligné. ?. Le texte du début dit que le remplissage de la ligne est mauvais et même extrêmement mauvais : 10000 est la plus grande valeur de « mauvaiseté » pour LATEX. ?. Le texte du début indique de façon un peu cryptique la fonte en cours. ?. Réalisé avec la classe scrbook qui est une variante plus moderne de book. ?? c-struct.tex r??? – ????-??-??r??? – ????-??-?? ?.? Titre et résumé + Il faut bien être conscient que \marginpar n’est pas du tout adapté pour placer du matériel dans la marge comme la main en face du début de ce paragraphe, pour au moins deux raisons : on ne contrôle pas précisément l’emplacement vertical de la note, ni le côté où elle apparaît dans un document recto/verso. Il est important de réaliser que dans la plupart des cas ce manque de contrôle est une bonne chose : il signi?e en fait que LATEX s’occupe d’un nombre important de questions techniques dont il nous décharge. Une technique adaptée pour placer du matériel dans la marge de gauche à un emplacement ?xé sera vue plus tard (exemple ?.?). En?n, signalons que dans les documents en recto/verso, un bug de LATEX fait que les notes apparaissent parfois du mauvais côté près des changements de pages : il su?t pour corriger ce bug de charger le module mparhack. ?.?.? Notes de bas de page \footnote{?texte de la note?} Les notes de bas de page sont en fait bien plus faciles à utiliser que les notes marginales : il su?t de placer la commande \footnote à l’endroit précis où on veut que l’appel de note 4 ait lieu, en lui passant en argument le texte de la note de bas de page. Ceci 5 est illustré par l’exemple ?.?. Un paragraphe avec une note\footnote{Oui, vraiment.} de bas de page. Un paragraphe avec une note a de bas de page. a. Oui, vraiment. E?????? ?.? — Note de bas de page Il n’y a essentiellement aucun piège avec \footnote, sauf que c’est une commande qui ne peut pas être utilisée dans toutes les circonstances : elle ne peut par exemple pas être utilisée dans les titres de section. Nous verrons tout à l’heure (en ?.?) comment gérer cette limitation. ?.? Titre et résumé ?.?.? Titre \title{?titre?} \author{?auteur?} \date{?date?} \maketitle On peut demander à LATEX de gérer automatiquement la mise en forme du titre. Pour cela, il su?t de lui donner les informations nécessaires, à savoir le titre du document, le nom de l’auteur, et si l’on veut 6 la date. Ces trois commandes (\title, \author et \date) n’écrivent rien dans le document (on peut même les placer dans le préambule si on veut) : il faut ensuite utiliser \maketitle (dans le corps du document, et généralement au tout début) pour faire réellement apparaître ces informations, mises en forme, dans le document. ?. C’est-à-dire le petit numéro, par exemple le ? après le mot « note » ici. ?. Dans l’exemple, la note est numérotée « a » pour ne par interférer avec la numérotation des notes du texte principal. Ceci se fait automatiquemenr avec la technique utilisée pour les exemples (environnement minipage, qui sera vu en ?.?.?). ?. Si l’on ne précise pas de date, c’est celle du jour de compilation qui sera utilisée. c-struct.tex r??? – ????-??-?? ??? Structure du document r??? – ????-??-?? Par défaut en classe article, le titre apparaît centré, et le texte suit sur la même page (voir par exemple la mise en page des corrigés des exercices). On peut décider que le titre occupe une page à lui tout seul (comme pour ce polycopié par exemple), avec l’option de classe titlepage. C’est ce qui se passe automatiquement avec les classes report et book ; pour ces classes, on peut forcer le titre à être sur la même page que la suite du texte avec l’option notitlepage. Les paragraphes ci-dessus décrivent la façon la plus simple de faire un titre. Cependant, pour des documents plus sophistiqués, la mise en page automatique de LATEX peut sembler un peu trop sobre. Dans ces cas-là, on peut changer totalement de stratégie et faire la page de titre soi-même à la main. On n’utilisera alors pas du tout les commandes comme \title et \maketitle, et on devra spéci?er soi-même le texte, son ordre d’apparition sur la page et sa mise en forme à l’aide des outils standard vus au chapitre précédent. On doit par contre réserver une page non numérotée pour faire la page de titre : ceci se fait au moyen de l’environnement {titlepage} ; voir l’exercice ? pour un exemple. Dans ce cas, on reprend totalement le contrôle, et les options de classe comme titlepage ou notitlepage n’ont donc plus aucun e?et. Il est d’ailleurs intéressant de noter cette dualité des méthodes : la première consistant à laisser LATEX s’occuper de tout, la deuxième à tout faire soi-même. L’avantage de la première méthode est qu’on gagne beaucoup de temps lors de la préparation du document, en laissant de côté beaucoup de détails, et en obtenant quand même au ?nal un résultat visuellement correct. Dans un premier temps, on s’intéressera principalement à ce type de méthode (laisser faire LATEX), car c’est un de ses points forts de pouvoir procéder ainsi pour rédiger plus vite. Il est néanmoins important de savoir qu’à tout moment on peut regagner le contrôle des détails, si on est prêt à y passer le temps nécessaire. Une partie des techniques nécessaires pour contrôler totalement les divers éléments de mise en page et réaliser des constructions complexes seront présentées aux chapitres ? et ??. En attendant, laissez-vous guider par les mises en pages automatiques de LATEX. ?.?.? Résumé On obtient une présentation automatique du résumé (marges réduites, texte plus petit, titre « ré- sumé » en gras au-dessus) en mettant le contenu du résumé dans un environnement 7 {abstract}. Je renvoie aux exercices pour un exemple. ?.? Structure globale Les outils pour diviser son document en sections, sous-sections, etc. dépendent de la classe utilisée : il est clair que plus le document est important, plus ces outils seront nombreux. Les di?érentes commandes de sectionnement proposées par la plus petite des trois classes standard, article, sont présentées sur le source ?.?. Quelques remarques sur les commandes de sectionnement présentées ici. Le nom est en général assez explicite pour qu’il n’y ait pas besoin de préciser le sens. Elles partagent toutes (à l’exception de \appendix) la même syntaxe ; celle présentée dans le source ?.? est la version la plus simple. Voici la syntaxe complète, présentée uniquement sur la commande \section pour simpli?er, mais valable pour toutes les autres commandes de sectionnement. ?. Attention, l’ouvrage LATEX pour l’impatient présente abstract comme une commande : c’est une erreur. ?? c-struct.tex r??? – ????-??-??r??? – ????-??-?? ?.? Structure globale \part{?titre de partie?} \section{?titre de section?} \subsection{?titre de sous-section?} \subsubsection{?titre de sous-sous-section?} \paragraph{?titre de paragraphe?} \subparagraph{?titre de sous-paragraphe?} \appendix \section{?titre d’appendice?} \section{?titre d’appendice?} S????? ?.? — Structure d’un document en classe article \section?*?[?titre table des matières?]{?titre document?} Premièrement, l’étoile optionnelle permet d’obtenir une section non numérotée. Par défaut, toutes les commandes de sectionnement produisent une numérotation, sauf celles de niveau trop faible (par exemple \paragraph). On peut néanmoins souhaiter supprimer la numérotation d’une section, par exemple pour une introduction : c’est ce qui est souvent fait en exercices. Il est important de distinguer une section non numérotée d’un texte « juste écrit en gros » : d’une part, une section gère aussi beaucoup de détails comme l’espacement avant et après, qu’il est fastidieux d’essayer de reproduire à la main. D’autre part, si plus tard vous changez la mise en forme des titres, il sera plus facile de le faire uniformément en ayant utilisé \section* à bon escient qu’en ayant essayé de reproduire la mise en forme à la main. À l’inverse, il ne faut pas utiliser systématiquement \section* pour écrire en gros, mais seulement quand il s’agit d’un titre. Je renvoie aux corrigés des exercices pour des exemples d’usage de l’une ou l’autre solution. On a ensuite un argument optionnel permettant de spéci?er un titre alternatif qui n’apparaîtra pas dans le corps du document, mais uniquement dans la table des matières. Ceci peut être utile pour les sections ayant un titre très long, qui apparaîtrait sur plusieurs lignes dans la table des matières : on peut donner une version courte du titre qui perturbera moins la mise en pages de la table des matières. Comme on l’a signalé un peu plus haut, il n’est pas possible d’utiliser \footnote dans le titre d’une section : ceci est essentiellement dû aux problèmes qui surviennent en « déplaçant » la note jusqu’à la table des matières. La façon la plus raisonnable 8 de contourner ce problème est d’écrire par exemple \section[Section importante]{Section importante\footnote{Vraiment.}} de façon à ce que la note de bas de page apparaisse uniquement dans le document, mais pas dans la table des matières : on évite ainsi le problème. La commande spéciale \appendix agit comme un commutateur, à usage unique : il y a un avant et un après. Avant, tout se passe normalement. Après, la commande \part devient illégale, et la numérotation des sections change : elle passe en lettres, pour signi?er que les sections sont en fait des appendices. ?. Une autre façon est de placer \protect juste devant \footnote : de cette façon, la note apparaîtra correctement dans le titre et dans la table des matières. c-struct.tex r??? – ????-??-?? ??? Structure du document r??? – ????-??-?? Évoquons maintenant rapidement les caractéristiques des autres classes. En classe report, une nouvelle commande \chapter apparaît : elle s’insère entre \part et \section. Elle provoque un saut de page et le mot ? « chapitre » est écrit à côté du numéro. Après \appendix, c’est \chapter qu’il faut continuer à utiliser, et le nom devient alors « annexe ». La classe book propose d’autres commutateurs en plus de \appendix : il s’agit de \frontmatter à utiliser au début du document pour, par exemple la table des matières, la préface, etc. On utilise ensuite \mainmatter pour passer aux choses sérieuses (par exemple, dans le présent polycopié, on a utilisé \mainmatter juste avant de commencer le chapitre ?), puis éventuellement \backmatter une postface (non utilisé dans ce poly). Observez l’e?et sur la numérotation des pages. ?.? Références et liens hypertexte ?.?.? Références croisées Les di?érents niveaux de sectionnement sont numérotés automatiquement par LATEX. Une des fonctions principales de ces numéros est de pouvoir faire référence à une partie du document (par exemple en disant que vous avez compilé votre premier document à la section ?.?). Vu que les numéros changent automatiquement à chaque fois que vous insérez ou supprimez des sections, ou changez leur ordre, il faut un moyen de mettre à jour les références automatiquement. \label{?étiquette?} \ref{?étiquette?} \pageref{?étiquette?} Ce moyen est fournit par les commandes \label et \ref, qui s’utilisent de la façon suivante : on place la commande \label à l’endroit auquel on voudra faire référence plus tard, par exemple juste après ¹° la commande \section et son argument. L’argument de \label est une chaîne de caractères libre, mais il est prudent de n’y utiliser que des lettres non accentuées et éventuellement des traits d’union ¹¹. Plus tard, quand on voudra faire référence au numéro de cette section, on utilisera \ref avec la même étiquette comme argument. Si on veut faire référence à la page (par exemple, la section ?.? page ?), on utilisera \pageref toujours avec la même étiquette. L’étiquette est un nom privé qui ne se verra pas dans le document. Par exemple, l’étiquette qui me permet de faire référence au source ?.? est src-struct-article. Observez que le nom fait référence au contenu du source et non pas à sa position, qui pourrait changer. Par ailleurs, le pré?xe src- indique sa nature : vous n’êtes pas obligés d’utiliser de tels pré?xes, mais c’est souvent une habitude utile. Ainsi, la commande \label permet de marquer certains endroits du document, et les commandes \ref et \pageref de se référer au numéro de cet endroit, ou à sa page. Pour l’instant, les seuls endroit numérotés que l’on connaît sont les sections, sous-sections, etc. ainsi que les notes de bas de page (dans ce cas, il faut placer le label dans le texte de la note), mais l’on verra plus tard d’autres objets numérotés, auxquels on fera toujours référence par le même mécanisme. ?. Je suppose bien sûr que vous utilisez l’option french de babel, sinon ce sera chapter ou autre chose. ??. Si on place le \label avant, il fera référence à la section précédente. ??. On rencontre souvent des « : » dans les noms d’étiquettes, mais cela peut (exceptionnellement) causer des problèmes en français, alors que le trait d’union est à ma connaissance toujours ino?ensif. ?? c-struct.tex r??? – ????-??-??r??? – ????-??-?? ?.? Références et liens hypertexte On peut aussi faire référence à des objets situées plus loin dans le document : c’est de là que vient l’expression références croisées. Pour permettre ceci, le mécanisme de référence est asynchrone et nécessite deux compilations successives pour fonctionner correctement. Lors de la première compilation, vous obtiendrez des avertissements comme LaTeX Warning: Reference ‘s-first-doc’ on page 28 undefined on input line 330. LaTeX Warning: There were undefined references. LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right. qui disparaissent automatiquement aux compilations suivantes, et ré-apparaissent à chaque fois que vous changez quelque chose aux références croisées. Si l’avertissement de la deuxième ligne ci-dessus persiste après deux compilations, il est probable que vous ayez e?ectivement oublié de dé?nir un \label, ou fait une faute de frappe dans l’étiquette. Dans le corps du document, une référence à une étiquette non dé?nie fait apparaître un double point d’interrogation qui signale l’erreur. \tableofcontents À tout endroit du document, la commande \tableofcontents fait apparaître la table des matières. Comme les commandes de références, elle nécessite deux compilations pour fonctionner correctement. La table des matières est surmontée du titre « table des matières » qui est écrit comme si on avait utilisé la commande \section* : il n’y a rien à faire pour cela. (Bien sûr le titre n’est en français que si on utilise babel avec l’option french, je ne le répéterai plus.) ?.?.? Bibliographie Parallèlement au système de références croisées, internes au document, LATEX propose un système de citations pour faire référence à des documents externes. {thebibliography}{?exemple?} \bibitem{?étiquette?} \cite[?endroit?]{?étiquette?} Pour composer la liste des références bibliographiques, on utilise {thebibliography} : c’est un environnement très similaire à {itemize}, sauf qu’on remplace \item par \bibitem pour introduire chaque entrée. Il prend un argument obligatoire, qui est une texte libre dont la largeur doit être environ celle de la plus large clé de citation. Par exemple, quand des numéros sont utilisés comme dans l’exemple ?.?, si on a entre ?? et ?? références, on pourra indiquer 00 comme ?exemple?, pour donner le largeur de deux chi?res. La commande \bibitem prend en argument obligatoire une étiquette privée, n’apparaissant pas dans le document, mais seulement utilisée comme argument obligatoire de \cite pour citer le document en question. Le couple \bibitem et \cite est donc analogue au couple \label et \ref de ce point de vue, et le rôle de l’étiquette identique. La commande \cite accepte de plus un argument optionnel permettant de préciser un emplacement précis dans la référence citée. Tout ceci est illustré par l’exemple ?.?, dont les deux première lignes peuvent se situer n’importe où dans le document, et les autre sont par exemple à la ?n. c-struct.tex r??? – ????-??-?? ??? Structure du document r??? – ????-??-?? Pour en savoir plus, lire \cite{ttb} ou \cite[chap.~12]{lcfr}. % plus loin dans le document \begin{thebibliography}{LC} \bibitem{ttb} \emph{Tame the BeaST}, \bsc{N. Markey}, CTAN. \bibitem{lcfr} \emph{\LaTeX{} Companion}, \bsc{Mittlebach} \& \bsc{Goossens}, Pearson. \end{thebibliography} Pour en savoir plus, lire [?] ou [?, chap. ??]. Bibliographie [?] Tame the BeaST, N. M?????, CTAN. [?] LATEX Companion, M????????? & G???????, Pearson. E?????? ?.? — Bibliographie et citations ?.?.? Liens hypertexte Comme vous l’aurez constaté, dans la version PDF de ce polycopié, toutes les références, ainsi que les titres dans la table des matières, sont des liens vers la destination. De plus, vous disposez de signets PDF pour naviguer dans les sections. Ceci est obtenu automatiquement grâce au module hyperref. \usepackage[?option?, option?, ...?]{hyperref} Il su?t de charger le module sans aucune option pour que tout ce qui peut raisonnablement être un lien en devienne un. Vous pouvez cependant personnaliser certains aspects à l’aide des nombreuses options. En voici quelques-unes ; pour les autres, je renvoie à la documentation du module. colorlinks=true linkscolor=?nom de couleur?, urlcolor=?nom de couleur? pdfauthor=?votre nom?, pdftitle=?titre? L’option colorlinks permet aux liens d’être en couleur, au lieu d’être entourés d’un cadre coloré ; la couleur peut être choisie avec linkscolor, ou urlcolor selon le type de lien. En?n, vous pouvez spéci?er certaines méta-informations qui n’apparaîtront pas dans le PDF lui-même mais seront visibles via le menu « propriétés » du lecteur de PDF, ou de la commande pdfinfo. En fait, hyperref permet aussi de créer des liens vers adresses externes. On peut au choix montrer le texte de l’adresse avec la commande \url, ou transformer en lien ¹² un texte arbitraire, comme le montre l’exemple ?.?. Le CTAN : \url{http://ctan.org/}. Ou \href{http://ctan.org/}{le CTAN}. Pour \href{mailto:mpg@math.jussieu.fr}{m’écrire}. Le CTAN : http://ctan.org/. Ou le CTAN. Pour m’écrire. E?????? ?.? — Liens avec hyperref ??. La commande utilisée pour cela a un nom familier pour ceux d’entre vous qui connaissent un peu d’HTML. ?? c-struct.tex r??? – ????-??-??r??? – ????-??-?? ?.? Structure de la page ?.? Structure de la page La classe de document prévoit un style de page, avec des dimensions prédé?nies en fonction de certaines options : par exemple, en recto/verso, les marges de gauche et de droite ne font pas la même taille. Vous pouvez régler à votre guise ces dimensions avec le module geometry. \usepackage[?options?]{geometry} \geometry{?options?} Les options peuvent être au choix indiqués au chargement du module, ou plus tard dans le préambule avec la commande \geometry : les deux sont rigoureusement équivalents. Les options disponibles sont nombreuses et je renvoie à la documentation pour une liste complète. Les plus importantes à connaître sont vmargin et hmargin qui règlent les marges du haut et du bas (resp. de gauche et de droite) simultanément, rmargin, lmargin, tmargin et bmargin pour les spéci?er séparément, et landscape pour changer l’orientation du papier. Pour toutes les options acceptant une longueur, la dé?nition de longueur est celle vue en section ?.?. Par exemple, on peut dire \usepackage[hmargin=3cm, landscape]{geometry} Si on charge geometry sans options, il modi?era quand même les marges par rapport à celles prévues par la classe (il fait en général des marges un peu plus petites). Un moyen commode de se familiariser avec les di?érentes dimensions d’une page est d’utiliser la commande \layout du module layout : elle dessine la maquette de la page en cours, avec une légende portant les noms et les valeurs des di?érentes dimensions. Pour avoir cette légende en français, il su?t de passer l’option french au chargement du module layout. Par exemple, les dimensions utilisées par le présent document sont visibles sur la page suivante. Toutes ces longueurs peuvent être spéci?ées comme options de geometry (en retirant le \ initial). Toutefois, il est conseillé de ne pas modi?er hoffset ni voffset, réservés à des usages bien particuliers. Par ailleurs, on aura intérêt à ne pas régler directement paperwidth et paperheight si on utilise un format de papier standard et à préférer l’option correspondante (par exemple, a4paper). On constate sur la ?gure que des espaces particuliers sont réservés pour un éventuel en-tête ou pied de page. Pour l’instant, on a en général juste un pied de page consistant en le numéro de page, centré ; en classe book on aurait aussi un en-tête de page. On verra en section ??.? comment personnaliser le contenu de ces zones. c-struct.tex r??? – ????-??-?? ??Entête Corps Pied de page Marge Notes  ?i - ?i ? 6  ?i- ?i-   ??i- ?i-  6 ? ??i ?i ? 6 6 ? ?i 6 ? ?i 6 ? ?i 1 un pouce + \hoffset 2 un pouce + \voffset 3 \evensidemargin = 31pt 4 \topmargin = -32pt 5 \headheight = 17pt 6 \headsep = 20pt 7 \textheight = 623pt 8 \textwidth = 413pt 9 \marginparsep = 12pt 10 \marginparwidth = 77pt 11 \footskip = 47pt \marginparpush = 6pt (non affiché) \hoffset = 0pt \voffset = 0pt \paperwidth = 597pt \paperheight = 845pt? Les modes mathématiques ?.? Découvertes des modes mathématiques ?.?.? Les deux modes mathématiques Pour écrire des maths en LATEX, il faut entrer dans un mode spécial appelé mode mathématique. Celui-ci existe en deux variantes : en ligne et hors texte, selon que les éléments mathématiques doivent être intégrés au paragraphe en cours ou bien apparaître sur une ligne à part. Sur l’exemple ?.?, le premier v ? est en mode en ligne, et sa dé?nition en mode hors-texte. Le nombre \(\sqrt{2}\) est défini par \[ (\sqrt{2})^2 = 2 \] et \(\sqrt{2} > 0\). C’est un nombre réel irrationnel. Le nombre v ? est dé?ni par ( v ?) ? = ? et v ? > ?. C’est un nombre réel irrationnel. E?????? ?.? — Les deux modes mathématiques Ici, on est allé à la ligne dans le source pour la formule hors-texte, mais c’est juste pour rendre le source plus clair : ça ne change rien au résultat ; le retour à la ligne et le centrage de l’équation sont automatiques en passant en mode hors-texte. Les modes mathématiques sont délimités de la façon suivante : en ligne avec \(...\) ou $...$, ou l’environnement {math} ; hors-texte avec \[...\], ou l’environnement {displaymath}. Avec le module amsmath, on passe aussi en mode hors-texte avec l’environnement {equation*}. Une mauvaise façon de passer en mode hors-texte est d’utiliser $$...$$ ; on la trouve mentionnée dans de nombreuses références. Je recommande fortement ¹ de ne pas l’utiliser, car elle présente di?érents défauts (espaces verticaux incohérents, non-respect de l’option de classe fleqn, incompatibilités avec amsmath, ...) et que \[...\] n’est pas beaucoup plus long à saisir. En mode mathématique, plusieurs choses di?èrent du mode texte : – une police di?érente est utilisée, les lettres sont par défaut en italique ; – les espaces sont totalement ignorés : $a b$ est équivalent à $ab$ et donnera ab ; – les deux caractères spéciaux ^ et _ deviennent autorisés ; – un certain nombre de commandes deviennent disponibles. J’insiste sur le fait que les espaces sont tous ignorés : c’est en général une bonne chose car l’espace en mode mathématique est très délicat à régler, il faut souvent utiliser des demi-espaces, des tiers d’espace, etc. Il vaut donc mieux que ce soit LATEX qui s’en occupe plutôt que de nous obliger à saisir des commandes compliquées pour obtenir l’espacement correct. Mais c’est potentiellement déroutant au début. ?. Lire : ne pas respecter cette recommandation comptera comme une faute. c-math.tex r??? – ????-??-?? ??? Les modes mathématiques r??? – ????-??-?? En?n, même si LATEX seul propose de nombreuses commandes pour les math, certains modules étendent là aussi des possibilités. Deux d’entre eux sont incontournables : il s’agit de amsmath et amssymb. Il est recommandé de les charger dans le préambule de tout document utilisant des formules mathématiques. Dans toute la suite de ce chapitre, tous les exemples avec des formules supposeront que ces deux modules sont chargés, sans le préciser à chaque fois. Si le paquet mathtools est disponible, il peut avantageusement remplacer amsmath : il fournit les même fonctionnalités, ainsi que quelques autres commandes pour simpli?er certaines constructions ou régler des points de détail (comme l’alignement des exposants — un exemple est donné en exercices) et corrige de légers bugs. ?.?.? Outils de base ^{?exposant?} ^?symbole unique? _{?exposant?} _?symbole unique? Les deux caractères réservés ^ et _ deviennent utilisables en mode math, où il servent à mettre respectivement en exposant ou en indice le symbole qui les suit. Attention, si on veut mettre plusieurs symboles en indice ou en exposant, il faut les entourer par des accolades. On peut mettre un indice et un exposant dans l’ordre qu’on veut sur le même symbole, mais pas deux indices ou deux exposants. On peut par ailleurs utiliser toutes les constructions voulues (en particulier, des indices et exposants) dans un indice ou un exposant, comme le montre l’exemple ?.?. $2^{2^2} = 2^4$ mais $u_n+1 \neq u_{n+1}$ et $\sqrt[3]{2} = 2^{\frac{1}{3}}$. ? ? ? = ? ? mais un + ? ? un+? et v? ? = ? ? ? . E?????? ?.? — Indices, exposants, fractions et racines \frac{?numérateur?}{?dénominateur?} \sqrt[?indice?]{?radicande?} Comme on le voit aussi sur l’exemple ?.?, on utilise \frac pour obtenir une fraction, et \sqrt pour une racine. Par défaut c’est une racine carrée, mais l’argument optionnel permet de préciser. L’argument optionnel n’est disponible qu’avec le module amsmath : je rappelle que tous les exemples mathématiques supposent que ce module est chargée, ainsi que amssymb, je ne le répé- terai plus. Comme de nombreux autres éléments, les fractions ont une apparence di?érente selon qu’elles sont en mode hors-texte simple, on mode en-ligne, ou imbriquées dans d’autres constructions : LATEX règle automatiquement le style (taille et espacement) sans que vous ayez à vous soucier de rien. Nous verrons en ?.?.? comment reprendre le contrôle des styles pour les rares cas où c’est souhaitable. \sum_{?borne basse?}^{?borne haute?} \prod_{?borne basse?}^{?borne haute?} \int_{?borne basse?}^{?borne haute?} \iint \oint ... On obtient respectivement des sommes, produits et intégrales avec \sum, \prod et \int. La syntaxe pour les bornes est commune à ces trois commandes : c’est la même que s’il s’agissait ?? c-math.tex r??? – ????-??-??r??? – ????-??-?? ?.? Découvertes des modes mathématiques d’indices et exposants normaux. Cependant, ils obéissent à des règles de placement spéciales, qui dépendent du mode : notamment les bornes seront bien placées dessus et dessous en mode horstexte. Pour les intégrales, de nombreuses variantes sont disponibles ² et il convient de les utiliser : \iint pour une intégrale double fournit par exemple un plus joli résultat que \int\int. La liste de ces commandes fait partie de la liste de symboles mathématiques ³ distribuée. Posons $S = \sum_{i=1}^n u_n$. Ou bien \[ S = \sum_{i=1}^n u_n \] On a aussi \( \iint f \neq \int\int f \). Posons S = ? n i=? un. Ou bien S = n ? i=? un On a aussi ? f ? ? ? f . E?????? ?.? — Sommes et intégrales De nombreux symboles spéciaux sont disponibles en mode mathématique. Citons par exemple toutes les lettres grecques, qui s’obtiennent par leur nom : \alpha, \beta, ..., mais aussi en majuscule quand elles existent : \Gamma, \Delta, ainsi que quelques lettres issues de l’alphabet hé- braïque : \aleph, \beth. De nombreuses ?èches existent, avec des noms souvent assez descriptifs : \leftarrow pour une ?èche vers la gauche, \to et \mapsto pour les fonctions. En?n, une grande quantité de symboles ensemblistes (\in, \subset, etc.) de relation (\leq pour Less or EQual, \neq pour Not EQual, etc.), \cdot pour un point centré désignant la multiplication, \cdots pour une suite de points centrés. Il serait vain de vouloir lister tous les symboles disponibles : je renvoie donc à la liste de symboles courants 4 distribuée, qui est extraite de flshort-3.20.pdf 5. Encore plus de symboles mathé- matiques sont listés dans le document symbols-a4.pdf 6 déjà évoqué à propos des symboles en mode texte. Voyons, pour ?nir ce premier tour d’horizon, les di?érentes fontes disponibles en mode mathé- matique. Elles sont listées et illustrées par la table ?.?. Attention, pour que la commande \mathscr soit disponible, il faut charger le module mathrsfs. On peut par ailleurs obtenir une variante de \mathcal 7 en chargeant le module eucal. En?n, les deux fontes calligraphiques (\mathcal et \mathscr) ne sont disponibles que pour les majuscules. Par ailleurs, des commandes de changement de fontes similaires à celle du mode texte sont disponibles, mais seules \mathrm et \mathbf sont réellement utiles en pratique. On prendra garde en tout cas à ne pas utiliser les commandes ce changement de fontes du mode texte en mode mathématique, notamment les commandes de changement de taille. On verra plus loin comment contrôler la taille via le style (sec. ?.?.?) et comment passer en mode texte au milieu du mode mathématique (sec. ?.?.?). ?. En?n, avec amssymb, mais j’avais déjà dit que je ne le répéterai plus. ?. http://people.math.jussieu.fr/~mpg/lm204/files/doc-symboles-math.pdf ?. http://people.math.jussieu.fr/~mpg/lm204/files/doc-symboles-math.pdf ?. http://mirror.ctan.org/info/lshort/french/flshort-3.20.pdf ?. http://mirror.ctan.org/info/symbols/comprehensive/symbols-a4.pdf ?. Ou bien obtenir une variante de \mathscr en chargeant eucal avec l’option mathscr au lieu de charger mathrsfs. Il n’y a pas de moyen simple d’avoir ces trois polices calligraphiques simultanément disponibles. c-math.tex r??? – ????-??-?? ??? Les modes mathématiques r??? – ????-??-?? Police Exemple Code par défaut abc $abc$ romaine dx $\mathrm{d}x$ grasse droite C ? R $\mathbf{C} \supset \mathbf{R}$ grasse k $\boldsymbol{k}$ fraktur P | p $\mathfrak{P} \mid \mathfrak{p}$ calligraphique A $\mathcal{A}$ anglaise C $\mathscr{C}$ ajourée N ? Z $\mathbb{N} \subset \mathbb{Z}$ T???? ?.? — Fontes disponibles en mode mathématiques ?.? Points plus délicats ?.?.? Distinguer texte et mathématiques Pour obtenir des documents corrects, il faut prendre garde de bien distinguer le mode texte du mode mathématique : il est dangereux de passer en mode math lorsque ce n’est pas justi?é (par exemple, utiliser ^ pour mettre du texte en exposant alors que \up est fait pour ça en mode texte), et réciproquement il est incorrect de rester en mode texte pour des éléments mathématiques. Par exemple, pour écrire « soit f une fonction », on passera en mode mathématique 8 pour le f , qui représente un objet mathématique. En mode mathématique, les lettres sont par défaut considérées comme des variables et composées en italique. Il arrive de devoir passer en police droite, pour di?érentes raisons. – Pour les lettres représentant des constantes, comme dans e x ($\mathrm{e}^x$) où le « e » est une constante, la base des logarithmes népériens, alors que x est une variable et reste donc en italique. On utilisera dans ce cas \mathrm. – Pour les noms d’opérateurs, comme lim, sin ou cos. De nombreux noms sont prédé?nis (\lim, \sin, \cos), mais on peut en dé?nir soi-même au besoin (voir ci-dessous comment faire). Il faut toujours utiliser une commande prédé?nie, ou dé?nie comme ci-dessous, pour les opérateurs. – Pour écrire réellement du texte en mode maths. Ceci peut être l’expression « tel que » au milieu d’une formule, ou encore une abréviation comme dans Pe?ectif , que l’on saisit comme $P_{\text{effectif}}$. On utilisera \text à l’exclusion de tout autre moyen ? pour ce cas. Il est important d’apprendre à bien distinguer ces trois cas. En particulier dans le dernier cas, on passe vraiment en mode texte : dans l’argument de \text, les espaces sont de nouveaux respectés et les commandes spéci?ques au mode mathématique interdites. \DeclareMathOperator{?commande?}{?nom?} ?. À l’exclusion de tout autre procédé, comme \textit : même si l’apparence est parfois la même, ce n’est pas toujours le cas et de toutes façon la signi?cation est di?érente. ?. On trouve dans la littérature de nombreuses astuces comme \textrm ou \mbox pour passer localement en mode texte : elles sont toutes moins robustes que la commande \text pour des raisons diverses même si elles donnent un résultat correct dans certaines circonstances. Elles seront systématiquement considérées comme incorrectes. ?? c-math.tex r??? – ????-??-??r??? – ????-??-?? ?.? Points plus délicats Pour déclarer un nouvel opérateur, on utilisera \DeclareMathOperator, qui est disponible uniquement dans le préambule. Le premier argument doit être une commande qui n’existe pas encore, et le deuxième est le nom tel qu’il doit apparaître dans le document. On n’est pas obligé de prendre le même nom pour la commande, comme le montre l’exemple ?.?. \DeclareMathOperator{\acos}{arccos} On a toujours $\cos(\acos(x)) = x$. On a toujours cos(arccos(x)) = x. E?????? ?.? — Déclaration et usage d’un nouvel opérateur ?.?.? Styles mathématiques \displaystyle \textstyle \scriptstyle \scriptscriptstyle Il existe en LATEX quatre styles mathématiques auxquels on peut accéder par les commandes cidessus. Il faut bien distinguer les notions de mode et de style mathématique : par défaut, quand on entre en mode mathématique hors-texte, on est en style \displaystyle, alors que quand on entre en mode mathématique en-ligne, on est en style \textstyle. Ensuite, LATEX va faire évoluer le style tout au long de la formule en fonction de l’emplacement des éléments : par exemple, l’indice d’un élément en \textstyle sera en \scriptstyle, etc. On peut quand on le souhaite forcer le passage dans un certain style avec l’une des quatre commandes de style : celles-ci agissent jusqu’à la ?n de la formule (ou sous-formule) en cours, ou jusqu’à ordre contraire. Le style contrôle la taille des symboles, mais aussi l’espace entre eux : observer par exemple l’espace autour des di?érents signes « + » dans l’exemple ?.?. \[ \frac{1}{1-\frac{1}{2}} \neq \frac{1}{\displaystyle 1-\frac{1}{2}} \text{ et } 1+2 \neq 1^{1+2} \] ? ? - ? ? ? ? ? - ? ? et ? + ? ? ? ?+? E?????? ?.? — Styles mathématiques ?.?.? Limites et grands opérateurs \limits \nolimits Comme on l’a vu, le placement des bornes autour d’opérateurs comme \sum et \prod est réglé par LATEX. La règle de base est la suivante : en mode \displaystyle, les bornes sont placées au-dessus et en dessous ; dans tous les autres modes elles sont placées comme des exposants normaux. On peut forcer les bornes à se placer dessus et dessous en utilisant la commande \limits immédiatement après l’opérateur, comme dans l’exemple ?.?. Dans le sens inverse, on peut utiliser \nolimits. \DeclareMathOperator*{?commande?}{?nom?} La syntaxe de \DeclareMathOperator présentée précédemment n’était pas tout à fait complète : il existe en fait une variante étoilée qui permet de déclarer des opérateurs dont les « bornes » pourront se placer en-dessous et au-dessus. L’exemple ?.? illustre l’usage de de cette version étoilée. c-math.tex r??? – ????-??-?? ??? Les modes mathématiques r??? – ????-??-?? \DeclareMathOperator*{\colim}{colim} \[ \colim_{x\to\infty} f(x) = \colim\nolimits_{x_\to\infty} f(x) \] colim x?8 f (x) = colimx?8 f (x) E?????? ?.? — Opérateur et placement des bornes Commande Nom E?et \qquad double cadratin x = y [p] \quad cadratin x = y [p] \ inter-mot x = y [p] \; épaisse x = y [p] \: moyenne x = y [p] \, ?ne x = y [p] pas d’espace x = y[p] \! ?ne négative x = y[p] T???? ?.? — Commandes d’espace en mode mathématique ?.?.? Espaces en mode mathématique On peut parfaitement utiliser \hspace pour retoucher l’espacement en mode mathématique, mais c’est rarement une bonne idée. On dispose en fait de commande prédé?nies, présentées dans la table ?.?, qui sont bien plus commodes. Certaines de ces commandes sont même disponibles en mode texte, comme \quad qui est équivalent à \hspace{1em}. Ces commandes ne sont en fait pas souvent utiles, car LATEX se débrouille en général bien pour placer les choses comme il faut en mode mathématique. Un cas cependant où il faut toujours rajouter l’espace à la main est celui d’un quanti?cateur à séparer du reste d’une formule hors-texte : on écrira donc souvent \quad\forall x. L’usage des commandes d’espacement prédé?nies (par opposition à \hspace) permet de rester cohérent entre les di?érentes formules. D’autres exemples sont donnés en exercices. ?.?.? Délimiteurs Certains délimiteurs peuvent se saisir directement au clavier comme ( et [, d’autres sont accessibles via des commandes comme \{ ou \langle et \rangle ({, ?, ?). Tous les délimiteurs peuvent s’adapter en taille à leur contenu : pour que LATEX calcule automatiquement la taille nécessaire, il su?t de faire précéder le délimiteur ouvrant par \left et le délimiteur fermant par \right. Si un symbole intermédiaire doit aussi être adapté en taille, on le fera précéder de \middle ; si un seul symbole est à adapter, on utilisera en face le délimiteur spécial « . » qui est invisible, comme l’illustre l’exemple ?.?. Par ailleurs, si la taille calculée par LATEX ne convient pas, on est toujours libre d’ajuster soimême la taille des délimiteurs en les faisant précéder d’une des commandes \big, \Big, \bigg, \Bigg. Il n’y a alors plus aucun contrôle d’équilibrage contrairement à ce qui se passe avec \left et \right. ?? c-math.tex r??? – ????-??-??r??? – ????-??-?? ?.? Constructions mathématiques \[\left( \frac{1}{2}\right)^2 \quad \left. \frac{\partial f}{\partial x} \right|_{x=0} \quad \left\{ \frac{a}{b} \ \middle|\ b=10^n \right\}\] ( ? ? ) ? ? f ?x | x=? { a b | b = ?? n } E?????? ?.? — Taille automatique des délimiteurs Résultat Code x f z? y $x \stackrel{f}{\longmapsto} y$ Xn L? ÐÐÐ? n?8 X $X_n \xrightarrow[n\to\infty]{L_2} X$ b a? d c $\sideset{_a^b}{_c^d}\prod$ n * < * n $\underset{*}{n} < \overset{*}{n}$ ( n p ) $\binom{n}{p}$ ? i?I j?J $\sum_{\substack{i\in I \\j\in J}}$ tM ${}^t\!M$ x n = x?x ´¸¶ n $x^n = \underbrace{x \cdots x}_n$ T???? ?.? — Petites constructions mathématiques ?.? Constructions mathématiques ?.?.? Petites constructions Diverses petites constructions sont disponibles avec LATEX et amsmath. Les plus courantes sont présentées dans la table ?.?. ?.?.? Alignements Voyons maintenant comment réaliser divers alignements en mode mathématique : matrices, systèmes d’équations, longs calculs... La syntaxe générale est la même que celle des tableaux, qui seront étudiés en détails au chapitre ? : les lignes sont séparées entre elles par \\ et au sein de chaque ligne, les cellules sont séparées par le caractère réservé & (qui est illégal en dehors d’un tableau). Tout ceci est entouré d’un environnement qui détermine l’apparence générale de l’alignement en fonction de sa nature. {matrix} {pmatrix} {vmatrix} {Vmatrix} {bmatrix} {Bmatrix} Par exemple, on obtient une matrice simple avec l’environnement {matrix}. Les autres variantes de cet environnement ajoutent des délimiteurs autour de la matrice : dans l’ordre ci-dessus, c-math.tex r??? – ????-??-?? ??? Les modes mathématiques r??? – ????-??-?? on a des parenthèses (exemple ?.?), des barres verticales, des doubles barres verticales, des crochets, des accolades. {aligned} {cases} Pour aligner entre elles les équations d’un système, on utilise {aligned} : il su?t de placer le repère d’alignement & juste devant le signe d’égalité (ou d’inégalité), et de terminer chaque ligne par \\. Pour faire une accolade devant le système, on utilisera \left\{ d’un côté et \right. de l’autre, comme illustré à l’exemple ?.?. Une construction particulière revient souvent, pour les disjonctions de cas, comme dans l’exemple ?.?, pour laquelle on dispose de l’environnement spécialisé {cases}, qui nous dispense même d’avoir à prendre soin de l’accolade. \[ M = \begin{pmatrix} a & b \\ c & d \end{pmatrix} \qquad \delta_i^j = \begin{cases} 0 &\text{si } i \neq j \\ 1 &\text{si } i=j \end{cases} \] M = ( a b c d ) d j i = ? ? ? ? si i ? j ? si i = j E?????? ?.? — Alignements mathématiques moyens {align?*?} {multline?*?} On peut en?n prévoir des alignements au niveau de l’ensemble de la formule. Les environnements align et multline se distinguent des environnements précédents dans le sens où ils ne s’utilisent pas en mode mathématique, mais directement à la place de \[...\] pour passer en mode mathématique. En fait, les deux constructions suivantes sont équivalentes : \begin{align*}...\end{align*} \[ \begin{aligned}...\end{aligned} \] L’environnement multline* est particulier dans le sens où vous n’avez pas de repère d’alignement à indiquer, mais seulement les coupures de lignes : il sert pour les formules trop longues pour tenir sur une ligne, mais où aucun alignement sur un symbole particulier n’est requis. Ces deux derniers environnements existent en variante étoilée ou non étoilée : ceci sert à contrô- ler la présence ou l’absence de numérotation comme on va le voir à la section suivante. ?.? Environnements numérotés ?.?.? Formules numérotées Pour obtenir une formule numérotée, il su?t de remplacer \[...\] par un environnement {equation}. En fait, tous les environnements qui permettent de passer en mode math horstexte (pour l’instant on connaît {equation}, {align} et {multline}), sauf {displaymath}, provoquent une numérotation automatique des équations. Ils admettent une version étoilée qui a pour e?et de supprimer cette numérotation. ?? c-math.tex r??? – ????-??-??r??? – ????-??-?? ?.? Environnements numérotés À l’intérieur d’une formule numérotée, on peut utiliser \label pour dé?nir une nouvelle étiquette à laquelle on pourra faire référence avec \ref et \pageref comme on l’a vu à la section ?.?. On peut même remplacer \ref par \eqref, ce qui a pour e?et d’insérer automatiquement les parenthèses autour du numéro d’équation. ?.?.? Environnements de type théorème En plus des équations, il est souvent utile de numéroter des théorèmes, dé?nitions, etc. pour pouvoir y faire référence plus tard. Ces environnements munis d’un titre (p. ex. « théorème ») et d’un numéro sont traditionnellement appelés environnements de type théorème, même s’ils peuvent en fait être utilisés dans d’autres contextes. \usepackage{amsthm} \newtheorem?*?{?nom env?}[?numéroté avec?]{?titre?}[?numéroté dans?] Aucun n’est dé?ni par défaut : il faut donc les dé?nir soi-même dans le préambule. Pour cela, le plus simple est d’utiliser la commande \newtheorem, avec le module amsthm qui étend ses possibilités. La syntaxe complète de cette commande est un peu compliquée, mais dans le cas le plus simple elle se résume aux deux argument obligatoires : ?nom env? est le nom de l’environnement tel qu’il apparaîtra dans le source. Il ne doit pas correspondre au nom d’un environnement ou d’une commande ¹° qui existe. ?titre? est le nom de l’environnement tel qu’il apparaîtra dans le document : « ?éorème », « Dé?nition », etc. Par défaut, ceci produit un environnement numéroté. Les numéros des di?érents environnements sont indépendants, ce qui peut être pénible pour le lecteur, s’il y a dans le même document un lemme ?, une proposition ?, un théorème ?, une dé?nition ?, etc. et que le scholie ? arrive après le corollaire ? se rapportant au théorème ?. Pour éviter ceci, on peut demander que plusieurs environnements partagent la même numérotation : pour le premier, on procède normalement, et pour les suivants on utilise le nom du premier comme argument optionnel ?numéroté avec?. Par ailleurs, pour un long document, on veut peut-être éviter d’arriver au théorème ?? au bout d’un moment. On peut alors demander que les théorèmes soient numérotés par exemple par section, en passant section comme deuxième argument optionnel ?numéroté dans?. Si l’on veut une numérotation par chapitre, on utilisera chapter, etc. Par exemple, dans ce polycopié, les exemples sont numérotés par chapitre. On ne peut pas utiliser simultanément le premier et le deuxième argument optionnel de \newtheorem : on utilisera le second pour dé?nir un premier environnement, puis le premier pour les environnements partageant la même numérotation, comme le montre l’exemple ?.?. En?n, on peut dé?nir des environnements nommés mais non numérotés, comme l’environnement qc de l’exemple ?.?, avec la variante étoilée de \newtheorem. Il n’est alors bien sûr pas possible d’utiliser les deux arguments optionnels qui n’ont plus de sens. En?n, un environnement proof est disponible automatiquement : il s’agit d’un environnement avec titre et sans numérotation, muni d’un symbole spécial de ?n d’environnement « ». Les environnements dé?nis par \newtheorem, ainsi que l’environnement proof, admettent toujours un argument optionnel, qui permet de préciser le titre du théorème, comme on le voit à l’exemple ?.? avec la mention « de Fermat » pour le premier théorème. ??. En particulier, ça ne peut pas être def pour les dé?nitions. c-math.tex r??? – ????-??-?? ??? Les modes mathématiques r??? – ????-??-?? \usepackage{amsthm} \newtheorem{thm}{Théorème}[section] \newtheorem{exo}[thm]{Exercice} \newtheorem*{qc}{Question de cours} \begin{thm}[de Fermat] Cubum autem in dous cubos,\dots \end{thm} \begin{proof} La marge est trop étroite. \end{proof} \begin{exo} La changer avec \verb+\geometry+. \end{exo} \begin{qc} Qu’est-ce qui est trop étroit ? \end{qc} ?éorème ?.?.? (de Fermat). Cubum autem in dous cubos,... Démonstration. La marge est trop étroite. Exercice ?.?.?. La changer avec \geometry. Question de cours. Qu’est-ce qui est trop étroit ? E?????? ?.? — Environnements de type théorème \theoremstyle{?nom de style?} On peut par ailleurs obtenir di?érents styles d’environnements en utilisant \theoremstyle pour changer le style des environnements de type théorème qui seront dé?nis ultérieurement. Les styles disponibles sont plain, definition et remark. Je renvoie aux exercices et à la documentation d’amsthm pour plus de détails. ?.? Documentation Les possibilités mathématiques de LATEX sont immenses, les mathématiciens en étant les principaux utilisateurs. Pour ce chapitre comme les autres, il n’est pas possible de tout présenter. Je rappelle donc ici les principales sources d’information concernant les math en LATEX. – La liste de symboles courants ¹¹ distribuée, extraite de flshort-3.20.pdf ¹². Pour les symboles plus rares, les sections ? et ? de symbols-a4.pdf ¹³. – Les documentations d’amsmath ¹4 et de mathtools ¹5 pour plus de détails sur les alignements et certains points délicats. – Le document présentant (presque) tout ce qui est possible avec des math en LATEX : Mathmode. pdf ¹6. De préférence, ne pas trop s’attarder sur la partie un, qui fait souvent de façon compliquée ce qui est présenté de façon plus simple dans les parties ultérieures en utilisant des modules. Certains de ces documents vous aideront à résoudre des problèmes di?ciles que vous rencontrez sans doute plus tard, mais vous êtes d’ores et déjà encouragés à garder toujours sous la main la liste des symboles courants. En particulier, pour l’examen et les exercices, tous les symboles présents sur cette liste sont supposés connus même s’ils n’ont pas été présentés indépendamment en cours. ??. http://people.math.jussieu.fr/~mpg/lm204/files/doc-symboles-math.pdf ??. http://mirror.ctan.org/info/lshort/french/flshort-3.20.pdf ??. http://mirror.ctan.org/info/symbols/comprehensive/symbols-a4.pdf ??. http://ctan.org/pkg/amsmath ??. http://ctan.org/pkg/mathtools ??. http://mirror.ctan.org/info/math/voss/mathmode/Mathmode.pdf ?? c-math.tex r??? – ????-??-??? Révisions et création de commandes ?.? Rappels et compléments ?.?.? Source minimal et encodages Rappelons l’allure d’un ?chier source LATEX pour les documents courants. \documentclass[a4paper]{article} % ou report ou book ou ... \usepackage[latin1]{inputenc} % ou utf8 ou macroman \usepackage[T1]{fontenc} % accents dans le pdf % \usepackage{textcomp} % symboles complémentaires (euro) % \usepackage{amsmath, amssymb} % minimum pour les maths % \usepackage{xspace} % protection de certains espaces ?modules supplémentaires? \usepackage[frenchb]{babel} % titres en français, typo française % \usepackage{hyperref} % liens hypertexte ?commandes pour régler la mise en pages? ?dé?nitions de commandes, environnements, etc.? % \title{?titre?} % \author{?nom de l’auteur?} % \date{?date?} % \today pour la date du jour \begin{document} % \maketitle ?reste du corps du document? \end{document} S????? ?.? — Fichier source de base Ce source de base est disponible dans une version prête à l’emploi ¹ que je vous recommande de télécharger et d’avoir toujours à portée de main, pour l’utiliser comme point de départ de tous vos documents. Les lignes commentées dans ce source ne sont pas obligatoires, mais sont assez souvent utiles. Vous n’avez qu’à les dé-commenter (retirer le caractère % en début de ligne) et éventuellement les modi?er pour les utiliser. Les autres lignes doivent ?gurer dans tous vos documents, éventuellement adaptées (vous pouvez changer les options de la classe ou de modules par exemple). Une ligne que vous pouvez avoir besoin de modi?er est l’appel à inputenc : en e?et, la bonne option ici dépend du réglage de votre éditeur. Rappelons les principales options disponibles. ?. http://people.math.jussieu.fr/~mpg/lm204/files/doc-source-base.tex c-rev-newc.tex r??? – ????-??-?? ??? Révisions et création de commandes r??? – ????-??-?? – Avec TeXnicCenter (sous Windows, donc), aucun réglage n’est possible. L’encodage utilisé par cet éditeur est cp1252. Vous pouvez donc utiliser cp1252 comme option d’inputenc. En fait, il se trouve que cp1252 est une légère extension de latin1, qui est un encodage beaucoup plus standard. Je vous recommande donc d’utiliser plutôt latin1 : certains caractères ne seront plus disponibles (par exemple, « ? » et « œ ») mais en revanche votre source sera plus facilement utilisable sous d’autres plateformes que Windows. – Avec la plupart des autres éditeurs, vous pouvez choisir l’encodage utilisé. Dans ce cas, tout ce qui compte, c’est que le réglage de votre éditeur corresponde à ce que vous indiquez en option à inputenc. Les deux encodages recommandés sont latin1 (qui peut s’appeler ISO-????-? dans le menu de votre éditeur) ou éventuellement utf8 (plus universel, mais pas encore accepté par ???? des modules LATEX). Les questions d’encodages sont techniques et peu intéressantes pour les personnes n’utilisant que des langues d’Europe de l’Ouest, comme le français ou l’anglais. Je vous recommande d’évacuer ce problème une fois pour toutes en choisissant un encodage commun à tous vos documents (par exemple latin1), en réglant votre éditeur pour qu’il utilise tout le temps cet encodage, et en utilisant toujours inputenc avec l’option choisie. Si vous travaillez en binôme avec un camarade sur un document, ou que vous travaillez sur un même document depuis plusieurs ordinateurs di?érents (par exemple, avec TeXnicCenter sur les sessions Windows de l’UTES, et chez vous avec TeXshop sous OS X), prenez soin d’utiliser le même réglage d’encodage partout. Dans le cas contraire, des problèmes peuvent survenir, allant jusqu’à rendre votre source totalement inutilisable. Donc, soyez prudents. ?.?.? Messages d’erreur courants Vous l’aurez constaté, la compilation d’un document ne se déroule pas toujours sans accroc. En LATEX comme avec tous les autres programmes informatiques, il est important de lire et savoir interpréter les messages d’erreur pour résoudre les problèmes. En ce qui concerne la lecture, je ne peux rien faire d’autre ² que vous exhorter à les lire vraiment, voici en revanche quelques éléments pour les interpréter. La première chose à savoir, c’est qu’en LATEX, une erreur peut en entraîner bien d’autres (et plus rarement, en cacher une autre). Quand votre document produit plusieurs erreurs, je vous recommande fortement de procéder ainsi : lisez seulement le premier message d’erreur, corrigez l’erreur, recompilez votre document et itérez. Une seuls erreur peut parfois tellement désorienter LATEX qu’il produira des centaines d’erreurs dans la suite du document : si vous êtes dans ce cas, pas de panique, traitez les problèmes un par un dans l’ordre. Le deuxième point important, surtout quand vos documents commencent à être longs, c’est de localiser l’erreur. Le message d’erreur indique toujours la ligne où LATEX a détecté l’erreur : comme LATEX ne voit pas dans le futur, l’erreur peut se trouver exactement à cette ligne, parfois un peu avant (le temps que LATEX s’en rende compte), mais jamais après. Par ailleurs, le message d’erreur comporte souvent une ligne de contexte, par exemple l.16 C’est clair : \textcolour {blue}{bleu} clair ?. Si les messages d’erreur n’apparaissent pas clairement avec votre éditeur (c’est souvent un problème avec TeXmaker), je peux bien sûr vous expliquer comment les lire. ?? c-rev-newc.tex r??? – ????-??-??r??? – ????-??-?? ?.? Dé?nitions On voit ici que l’erreur est survenue ligne ??, mais cette ligne pouvant être très longue, il est important de lire la suite. LATEX montre le contexte de l’erreur, et place un saut de ligne à l’endroit précis où il s’est arrêté : l’erreur est en général juste avant. Ici, c’est en e?et une faute de frappe sur \textcolour, dont l’orthographe correcte est \textcolor. Les deux points précédents sont valables pour tous les types d’erreur : traiter les erreurs une par une dans l’ordre, et utiliser les informations données par LATEX pour les localiser. Pour aller plus loin, il faut utiliser le message d’erreur lui-même. Ces messages sont en anglais ³, et sont parfois très précis, d’autres fois plus di?ciles à interpréter (typiquement, Missing \endcsname). Voici quelques message courants qu’il faut absolument savoir reconnaître. – Undefined control sequence. : commande non dé?nie. En général ceci signi?e soit que vous avec fait une faute de frappe dans le nom de la commande (ex. : \colour pour \color), soit que le nom est correct mais que vous avez oublié de charger le module qui fournit cette commande (ex. : \usepackage{xcolor} pour la commande \color). – ! LaTeX Error: Environment centre undefined. : environnement non dé?ni. Pareil que le point précédent, mais pour un environnement. – ! Missing $ inserted. : $ manquant (rajouté par LATEX). Soit vous avec oublié de passer en mode mathématique pour une construction autorisée seulement en mode math, soit vous avez oublié de sortir du mode mathématique pour une construction autorisée seulement en mode texte. Variante courante : vous ne voulez pas faire des math, mais vous avec oublié que ^ et _ sont des caractères réservés (voir section ?.?.?). – Runaway argument? : argument sans ?n ? Probablement, vous avez oublié une accolade fermante, et LATEX a donc l’impression que l’argument de la commande correspondante ne se termine jamais. Dans ce cas, il vous dit de quelle commande il s’agit ; par exemple : ! File ended while scanning use of \textbf . Pour une liste complète de toutes les erreurs produites par LATEX ainsi que les modules les plus courants, expliquées en français, vous pouvez consulter l’annexe B du LATEX Companion 4, qui n’a pas été intégrée à l’édition papier faute de place, mais est disponible gratuitement en ligne. C’est un document qu’il est utile de garder à portée de main (de préférence en version PDF : il est ainsi plus facile de trouver un message précis grâce à la fonction « rechercher » de votre lecteur PDF). Je rappelle que tous vos documents doivent compiler sans aucune erreur. LATEX produit parfois aussi des avertissements (warning) qui sont parfois importants, parfois pas. Pour simpli?er, nous considérerons que tous les avertissements liés aux polices (font warning) peuvent être ignorés ; pour les autres, me consulter. En?n, le dernier type de problème que LATEX peut rapporter concerne les débordement (ou défauts de remplissage) de boîte : overfull ou underfull \hbox ou \vbox. Ces problèmes sont également à traiter ; nous les aborderons en section ?.?.?. ?.? Dé?nitions Vous avez peut-être remarqué une subtilité dans certains messages d’erreurs évoqués ci-dessus : LATEX dit qu’une commande « n’est pas dé?nie », et pas qu’elle « n’existe pas ». La raison est simple : ?. Pour être précis, en américain, comme la plupart des commandes de LATEX. En anglais britannique, on aurait la commande \colour, la couleur grey et non gray, l’environnement centre, etc. ?. http://www.latex-project.org/guides/lc2fr-apb.pdf c-rev-newc.tex r??? – ????-??-?? ??? Révisions et création de commandes r??? – ????-??-?? la liste des commandes LATEX existante n’est pas ?gée, on peut l’étendre en chargeant des modules, mais surtout, on peut dé?nir soi-même de nouvelles commandes. Vous savez déjà le faire dans certains cas particulier : par exemple, vous savez déclarer des nouvelles commandes pour opérateurs mathématiques avec \DeclareMathOperator, ou des nouveaux environnements numérotés avec \newtheorem. Nous allons ici voir les techniques géné- rales de dé?nition de commandes et d’environnements. Cette possibilité est une des plus intéressantes de LATEX. Elle permet d’automatiser certaines constructions fastidieuses, et d’homogénéiser le rendu du document en séparant son fond (la structure) de sa forme (l’aspect visuel) : idéalement, le corps du document ne doit contenir aucune commande relative à la forme ; celles-ci ne devraient apparaître que dans la dé?nition de commandes personnelles. Ceci est surtout valable pour les documents de taille importante. ?.?.? Commandes simples \newcommand\?nom?{?dé?nition?} Les commandes les plus simples à dé?nir sont celles qui ne prennent pas d’argument. Elles se comportent alors comme un raccourci, soit pour du texte plus long à saisir, soit pour du texte ou des commandes qui reviennent souvent et qu’on veut être sûr d’écrire tout le temps de la même manière. \newcommand\sev{sous-espace vectoriel} \newcommand\defini{\textit} Une \defini{base} est une famille libre et génératrice. Une famille est \defini{libre} si\dots ; elle est \defini{génératrice} si\dots On appelle \defini{\sev} un sous-ensemble qui est aussi un espace vectoriel. Un sous-ensemble est un \sev{} si et seulement si\dots Une base est une famille libre et génératrice. Une famille est libre si... ; elle est génératrice si... On appelle sous-espace vectoriel un sous-ensemble qui est aussi un espace vectoriel. Un sous-ensemble est un sous-espace vectoriel si et seulement si... E?????? ?.? — Dé?nitions simples Par exemple, si à chaque fois que vous dé?nissez un mot, vous voulez l’écrire en italique, vous pouvez dé?nir une commande \defini que vous utiliserez dans le texte plutôt que \textit. Ceci présente (au moins) deux avantages 5 : homogénéité : vous êtes certains en procédant ainsi que toues les dé?nitions auront la même apparence, vous ne risquez pas d’utiliser une fois de l’italique, une fois du gras, par erreur. De façon générale, abstraction : en séparant le fond (ce terme est dé?ni ici) de la forme (ce mot doit être en italique), vous obtenez plus de souplesse pour changer cette dernière. Si par exemple vous décidez que l’italique n’est pas assez visible et que le gras est plus approprié, il vous su?t de changer la dé?nition de \defini, pas besoin de remplacer la moitié de vos \textit par des \textbf. ?. Avantages qui devraient vous être familiers si vous avez déjà suivi des cours de programmation, où l’on poursuit les même buts (entre autres). ?? c-rev-newc.tex r??? – ????-??-??r??? – ????-??-?? ?.? Dé?nitions Pour les commandes utilisées en mode texte qui remplacent une suite de mots, il faut faire attention au fait que les espaces qui suivent sont avalées. Observez par exemple les accolades après la deuxième utilisation de \sev dans l’exemple ?.? qui a pour but de protéger l’espace suivant. On a beau être prévenu, il est trop facile d’oublier ceci, avec pour conséquence des mots attachés dans le document compilé. Heureusement, une solution existe : il su?t, après avoir chargé le module xspace, d’ajouter la commande \xspace à la ?n de la dé?nition de sa commande. Ainsi, l’espace avalé sera automatiquement rajouté, sauf si la commande est suivie d’une ponctuation, comme illustré par l’exemple ?.?. \usepackage{xspace} \newcommand\sev{sous-espace vectoriel\xspace} Soit $F$ un \sev d’un espace vectoriel. Une partie stable par les opérations est un \sev. Soit F un sous-espace vectoriel d’un espace vectoriel. Une partie stable par les opérations est un sous-espace vectoriel. E?????? ?.? — Utilisation de \xspace ?.?.? Commandes avec arguments \newcommand*\?nom?[?n?]{?dé?nition avec ?? à ???} \newcommand\?nom?[?n?]{?dé?nition avec ?? à ???} LATEX permet également de dé?nir des commandes acceptant entre un et neuf arguments. La syntaxe est la même que pour des commandes simples, sauf qu’entre le nom et la dé?nition, on indique le nombre d’arguments entre crochets. On peut ensuite utiliser les arguments zéro, une ou plusieurs fois dans l’ordre qu’on veut dans la dé?nition, avec #1 pour le premier, #2 pour le deuxième, etc. \newcommand\guill[1]{\og #1 \fg} \newcommand\boldcolor[2]{\textbf{\textcolor{#2}{#1}}} \newcommand\vecmal[2]{(x_#1, \dots, x_#2)} \newcommand\vecbien[2]{(x_{#1}, \dots, x_{#2})} Le \guill{laser} pourrait tout \boldcolor{brûler}{red}. Attention, $\vecmal{1}{42} \neq \vecbien{1}{42}$ ! Le « laser » pourrait tout brûler. Attention, (x? , . . . , x??) ? (x? , . . . , x??) ! E?????? ?.? — Commandes avec arguments Parfois, il faut prendre garde dans la dé?nition à entourer chaque argument d’une paire d’accolades, sinon, LATEX le découpera impitoyablement en morceaux au moment du remplacement, comme le montre la comparaison entre \vecmal et \vecbien dans l’exemple ?.?. Vous aurez remarqué que pour dé?nir des commandes à argument on dispose de deux variantes : \newcommand* et \newcommand. C’est la première qui est recommandée dans la plupart des cas : elle dé?nira une commande à arguments courts, c’est-à-dire faisant moins d’un paragraphe (comme c’est le cas de la commande \textbf par exemple). C’est souvent utile pour dé- tecter des erreurs : si vous oubliez l’accolade fermante d’un argument court, l’erreur sera détectée dès la ?n du paragraphe plutôt qu’à la ?n du document. c-rev-newc.tex r??? – ????-??-?? ??? Révisions et création de commandes r??? – ????-??-?? ?.?.? Commandes avec arguments optionnels \newcommand?*?\?nom?[?n?][?valeur par défaut?]{?dé?nition?} Dans certains cas, un des arguments de la commande est presque tout le temps le même. Il est alors intéressant de rendre cet argument optionnel : c’est-à-dire qu’on aura pas besoin de l’indiquer quand il a sa valeur « normale », mais qu’on peut si on veut le changer en l’indiquant entre crochets. Vous connaissez déjà des exemples de commandes pré-dé?nies admettant un argument optionnel, comme \sqrt : on a la racine carrée avec \sqrt{x} (cas le plus courant), mais on peut aussi écrire une racine cubique avec \sqrt[3]{x}. \newcommand\fort[2][black]{% \textbf{\textcolor{#1}{#2}}} Un \fort{mot} vraiment très \fort[red]{important}. Un mot vraiment très important. E?????? ?.? — Commande avec argument optionnel Vous pouvez obtenir le même résultat avec vos propres commandes. Pour rendre optionnel le premier argument, il su?t de lui indiquer une valeur par défaut entre crochets juste avant la dé?nition de la commande. Attention, l’argument optionnel est toujours #1, et le nombre d’arguments à indiquer est le nombre total, en comptant l’argument optionnel. Ainsi, dans l’exemple ?.?, la commande \fort est déclarée comme ayant deux arguments, même si on peut l’utiliser avec un seul argument. Avec \newcommand, on ne peut avoir qu’un argument optionnel, qui doit toujours être le premier. Si on veut dé?nir des commandes ayant plusieurs arguments optionnels, on peut utiliser le module xargs 6, dont la documentation est disponible en français (texdoc xargs-fr, mthelp xargs-fr ou en ligne 7). ?.?.? Environnements \newenvironment{?nom?}{?code de début?}{?code de ?n?} Vous pouvez aussi dé?nir vos propres environnements. Rappelons que la partie entre le \begin et le \end s’appelle le corps de l’environnement. La principale di?érence d’usage entre un environnement et une commande est que le corps de l’environnement est généralement plus long que l’argument d’une commande : ainsi, on utilise une commande pour mettre quelques mots en italique, mais un environnement s’il s’agit de mettre en exergue tout un bloc de texte. Remarquez qu’il n’y a pas de #1 dans la dé?nition : le corps de l’environnement est placé automatiquement entre le ?code de début? et le ?code de ?n?. Une façon équivalente de voir les choses est de dire que le \begin{?nom?} est remplacé par ?code de début? et \end{?nom?} par ?code de ?n?. C’est donc un peu comme si on avait dé?ni deux commandes. En fait, un environnement, c’est un peu plus que deux commandes : en bonus, toutes les modi?cations de police ou autre e?ectuées par le ?code de début? sont automatiquement oubliées à ?. http://ctan.org/pkg/xargs ?. http://tug.ctan.org/get/macros/latex/contrib/xargs/xargs-fr.pdf ?? c-rev-newc.tex r??? – ????-??-??r??? – ????-??-?? ?.? Dé?nitions \newenvironment{petit}{% \begin{quote}\small}{\end{quote}} \newenvironment{remarque}{% \noindent\textbf{Remarque.}\itshape}{} \begin{remarque} Une remarque qui pourrait bien faire plusieurs paragraphes.\end{remarque} \begin{petit} Du texte petit sur une plus petite largeur. \end{petit} Du texte à nouveau normal ici pour voir. Remarque. Une remarque qui pourrait bien faire plusieurs paragraphes. Du texte petit sur une plus petite largeur. Du texte à nouveau normal ici pour voir. E?????? ?.? — Dé?nitions d’environnements la ?n de l’environnement. Il est conseillé d’utiliser cet e?et : il n’est ainsi pas rare d’avoir un code de ?n vide, comme pour l’environnement remarque de l’exemple ?.?. Il n’y a pas besoin d’utiliser \upshape ni \normalfont à la ?n pour annuler le \itshape du début. L’exemple appelle par ailleurs une remarque : il est souvent commode, pour des raisons de lisibilité, d’écrire les longues dé?nitions sur plusieurs lignes. Il faut alors faire attention au fait que chaque saut de ligne équivaut à un espace : on risque d’introduire des espaces dans la dé?nition sans le vouloir. Pour éviter cela, il su?t de placer un % en ?n de ligne, sans espace devant, à chaque fois qu’on change de ligne uniquement pour des raisons de présentation 8. Par ailleurs, je rappelle que le code des exemples est souvent très mal présenté, pour respecter des contraintes de place dans le polycopié. Je vous encourage à consulter plutôt les corrigés des exercices pour des exemples de code source présenté correctement. ?.?.? Redé?nitions \renewcommand\?nom?{?dé?nition?} \renewcommand?*?\?nom?[?n?]{?dé?nition?} \renewcommand?*?\?nom?[?n?][?valeur par défaut?]{?dé?nition?} \renewenvironment{?nom?}{?code début?}{?code ?n?} En dé?nissant une commande ou un environnement avec \newcommand ou \newenvironment, LATEX véri?e que le nom qu’on souhaite utiliser est bien disponible, et émet un message d’erreur sinon. La plupart du temps, c’est une très bonne chose, car cela vous empêche de re-dé?nir par erreur une des commandes plus ou moins internes de LATEX, ce qui pourrait avoir des conséquences catastrophiques. Il arrive parfois cependant qu’on veuille redé?nir une commande existante, par exemple parce que la dé?nition normale ne nous convient pas. On peut alors précéder comme pour une dé?nition normale, en utilisant \renewcommand ou \renewenvironment selon qu’il s’agit d’une commande ou d’un environnement. Ces commandes ont exactement la même syntaxe que leurs analogues sans re. Elles ont le même e?et, sauf que cette fois elle émettent un message d’erreur si le nom n’était pas déjà dé?ni. Il faut être prudent en redé?nissant des commandes ; par exemple il faudrait toujours que la commande, une fois redé?nie, garde presque le même sens qu’avant. Par exemple, ?. C’est ce qu’on appelle souvent « commenter ses ?ns de lignes ». c-rev-newc.tex r??? – ????-??-?? ??? Révisions et création de commandes r??? – ????-??-?? \renewcommand\le{\leqslant} est une re-dé?nition acceptable car la nouvelle commande et l’ancienne désignent deux variantes d’un même symbole (inférieur ou égal). Elle évite ainsi de mélanger par mégarde = et ? dans le texte, ce qui ne serait pas très joli. ?.?.? Couleurs \definecolor{?nom?}{?modèle?}{?valeur?} \colorlet{?nom?}{?couleur existante?} On peut dé?nir des nouveaux noms de couleur (toujours avec xcolor) de deux façons di?é- rentes : soit en donnant la valeur numérique de la couleur dans un modèle de couleurs (HTML, RGB, etc.) soit par rapport à une couleur existante, qui peut être un mélange. Par exemple, \definecolor{bleu1}{HTML}{000080} \colorlet{bleu2}{blue!50!black} sont deux façons de dé?nir un bleu foncé. La première ? dit que bleu1 sera sera dé?ni par des niveaux rouge et de vert nuls (les ? premiers ?) et un niveau de bleu de ??? (?? en hexadécimal) sur ???. La deuxième dit que bleu2 sera un mélange de bleu et de noir à ???. Les noms ainsi dé?nis sont utilisables de la même manière que les noms de couleurs pré-dé?nis. Il est souvent de bon goût de n’utiliser qu’un nombre réduit de couleurs dans l’ensemble d’un document (par exemple, ce poly n’utilise que trois couleurs, en dehors des exemples). On a alors intérêt à les dé?nir dans le préambule, plutôt que d’écrire la valeur de chaque couleur à chaque fois, avec les risques d’erreur et la di?culté de changement que cela implique. ?. Qui utilise le modèle de couleurs de l’HTML, le langage utilisé pour écrire les pages web. ?? c-rev-newc.tex r??? – ????-??-??? Figures ?.? Inclusion d’images ?.?.? La question des formats Il existe dans le monde informatique plusieurs façons de stocker des images dans des ?chiers, c’est-à-dire plusieurs formats graphiques généralement repérés pas l’extension du ?chier : bmp, gif, ti?, jpg, png, ps, pdf, svg pour ne citer que les plus connus. D’un point de vue technique, il se divisent en deux familles : les formats matriciels (bitmap) et les formats vectoriels. Dans le premier cas, l’image est représentée par une grille de points ayant chacun une valeur de couleur, c’est-à-dire une matrice de nombres. Dans le deuxième, chaque partie de l’image est représentée par les équations des courbes qui la délimitent. Les images stockées sous forme vectorielle seront in ?ne mises sous forme matricielles (rasterisées) au moment de l’impression ou de l’a?chage à l’écran, avec une résolution (la ?nesse de la grille) adaptée. Cette adaptation de la résolution au média fait la supériorité des images vectorielles sur les images matricielles : une image vectorielle qui rend bien à l’écran rendra ¹ bien à l’impression, ce n’est pas le cas des images matricielles. Il est donc recommandé d’utiliser des formats vectoriels aussi souvent que possible, et le reste du temps de veiller à choisir une résolution su?sante pour les documents destinés à être imprimés ². Assez de généralités, passons à la pratique avec LATEX. Ce dernier ne reconnaît actuellement pas tous les formats graphiques existants, il faut donc choisir le format des images à inclure dans une liste limitée. De plus, LATEX o?re plusieurs modes de compilation qui ne permettent pas d’inclure les mêmes types de ?chiers. La table ?.? liste les formats disponibles dans les deux modes de compilation les plus courants. PDF direct Passage par PostScript Aperçu TeXnicCenter Formats matriciels png, jpg — Formats vectoriels pdf ps, eps T???? ?.? — Modes de compilation et formats graphiques Un mot sur les di?érents modes de compilation : le mode que je recommande en général est PDF direct ; les di?érents exemples et exercices supposent que vous utilisez ce mode compilation. Il fonctionne bien et est souvent le plus simple. Il peut cependant arriver que l’usage de PostScript ?. Notez que la réciproque de cette implication est fausse : certaines images vectorielles qui rendent bien à l’impression rendront moins bien à l’écran : en e?et, celui-ci n’est pas assez précis pour rendre correctement les détails qui sont alors déformés de façon plus ou moins élégante. ?. Les documents destinés à l’écran peuvent se contenter d’une résolution inférieure : un écran actuel o?re environ ???ppp (points par pouces) de résolution, contre au moins ???ppp pour une imprimante. c-graph.tex r??? – ????-??-?? ??? Figures r??? – ????-??-?? comme format intermédiaire soit indispensable, par exemple pour si vous incluez beaucoup de graphiques provenant d’une application (Maple, Mathematica, etc.) qui n’exporte qu’en EPS et pas en PDF, ou pour utiliser des outils de dessin avancés en LATEX comme PStricks, que nous n’étudierons pas dans ce cours. Par ailleurs, même si LATEX lui-même ne peut pas utiliser tous les formats existants, il est toujours possible de convertir les images entre di?érents formats en utilisant des logiciels spécialisés. Par exemple, les deux logiciels Gimp ³ (formats matriciels) et Inkscape 4 (formats vectoriels) permettent d’e?ectuer des conversions facilement en ouvrant une image dans un format et en la sauvegardant dans un autre. (Ils sont par ailleurs gratuits et fonctionnent sous Windows, Mac OS X et Linux.) ?.?.? Inclusion simple \usepackage{graphicx} \includegraphics[?options?]{??chier?} Pour pouvoir inclure des images avec LATEX, il faut charger le module graphicx dans le pré- ambule. Attention, un autre module du nom de graphics existe : il est plus ancien et fournit exactement les mêmes possibilités, mais avec une syntaxe moins agréable. Nous utiliserons donc toujours graphicx. La principale commande fournie par ce module est \includegraphics : comme son nom l’indique, elle permet d’inclure des ?chiers d’images, et elle ne fait que ça (en particulier, il faut utiliser d’autres commandes pour déterminer le placement de l’image, voir section ?.?) mais elle le fait bien : la prochaine section liste les options disponibles, mais parlons déjà du nom du ?chier. On peut au choix donner le nom complet du ?chier, comme image.png ou bien omettre l’extension du moment qu’elle est reconnue par LATEX et donne juste le nom de base, comme image. Par ailleurs, les ?chiers d’images doivent en principe se trouver dans le même répertoire que le ?chier .tex que vous compilez pour que LATEX les trouve. En fait, on peut également placer les images dans un autre répertoire, ce qui est pratique pour les gros documents utilisant de nombreuses images. On doit alors indiquer le chemin des images de la façon suivante : si les images sont dans un sous-répertoire nommé img de l’endroit où se trouve le ?chier .tex, on indiquera img/image.png comme argument de \includegraphics. Attention : le séparateur de répertoires est / et non \, même sous Windows. Par ailleurs, pour accéder à un répertoire parent, on utilise « .. » : par exemple, si un répertoire lm204 contient un sous-répertoire poly avec les sources d’un polycopié 5 et un sous-répertoire img avec toutes les images utilisées dans les documents, on utilisera une commande comme \includegraphics{../img/lion.jpg} pour insérer l’image lion.jpg dans le polycopié. En?n, on peut aussi indiquer le chemin complet du ?chier, commençant par exemple par C:\ sous Windows et par / partout ailleurs. Ceci n’est souvent pas une bonne idée, car si jamais vous déplacez votre document, l’échangez avec un collègue 6, il faudra alors changer tous les chemins : ?. http://www.gimp.org/ ?. http://www.inkscape.org/?lang=fr ?. Exemple purement ?ctif, bien sûr. Toute ressemblance avec des personnes ou situations ayant réellement existé... ?. ou le montrez à votre enseignant... ?? c-graph.tex r??? – ????-??-??r??? – ????-??-?? ?.? Inclusion d’images préférez donc des chemins relatifs comme ci-dessus. Dans la plupart des cas, laisser les images dans le même répertoire que le source LATEX est la meilleure solution. Trois mots d’avertissement pour ?nir : LATEX gère malheureusement assez mal les espaces dans les noms de ?chiers, il faut donc mieux les éviter. De plus, utiliser des caractères accentués dans les noms de ?chiers est souvent source de problèmes (pas seulement pour LATEX). En?n, il faut prendre garde aux majuscules : sous Windows, on peut appeler fiChIeR un ?chier qui s’appelle en réalité Fichier sans rencontrer de problèmes, mais le document ne compilera alors pas sur un autre système (Mac OS X, Linux). Ma recommandation personnelle est de n’utiliser que des lettres minuscules (non accentuées) et des traits d’union dans les noms de ?chier (p. ex. mode-compil.jpg) pour éviter tout problème de ce côté. ?.?.? Options d’inclusion On peut inclure une image sans utiliser aucune option, comme indiqué ci-dessus, mais le plus souvent ou voudra contrôler au moins ses dimensions, et parfois tourner l’image ou la recadrer. Pour ceci, \includegraphics accepte plusieurs options sous la forme ?clé? = ?valeur?, que l’on peut regrouper en trois grandes familles. Le premier groupe d’options concerne la taille : si l’on n’indique rien, l’image sera insérée à sa « taille naturelle », expression qui ne veut en général pas dire grand chose. On peut spéci?er une échelle, qui est un nombre décimal, par rapport à cette taille naturelle, avec l’option scale : par exemple scale=0.5 pour réduire l’image de moitié. Il est souvent plus utile de donner les dimensions ?nales que l’on souhaite. Pour cela, on dispose des options height (hauteur) et width (largeur) ; on peut en fait n’en spéci?er qu’une et LATEX calculera automatiquement l’autre de façon à ne pas déformer l’image. On peut utiliser des dimensions absolue, p. ex. en centimètres, ou des dimensions prédé?nies par LATEX, comme \linewidth qui représente la largeur d’une ligne de texte. Par ailleurs, signalons que selon l’image et son format, elle peut comporter une ligne de base qui ne sera pas forcément en bas de l’image visuellement. Pensez par exemple à une image représentant la lettre « p » : la ligne de base 7 se situerait en bas de la boucle du « p » et pas en bas de la lettre, pour assurer un bon alignement avec les autres lettres. Dans un tel cas, height ne représente que la hauteur de l’image au-dessus de la ligne de base (la « partie émergée de l’iceberg ») et il faut utiliser totalheight si l’on veut parler de la « vraie » hauteur de l’image. En fait, il vaut mieux toujours utiliser totalheight à la place de height. Voici quelques exemples d’inclusion d’une image avec mise à l’échelle. Notez que dans la troisième ligne, l’image sera déformée si elle n’était pas carrée. \includegraphics[scale=2]{truc.pdf} \includegraphics[width=2cm]{truc.pdf} \includegraphics[width=2cm, totalheight=2cm]{truc.pdf} \includegraphics[width=\linewidth]{truc.pdf} Le deuxième groupe d’options permet de tourner l’image. Comme en math, une rotation est dé?nie par son angle et son origine, correspondant aux options angle et origin. L’angle est exprimé en degré, et l’origine est choisie parmi un ensemble de ?? points prédé?nis sur l’image et ?. Voir la ?gure ?.? et plus généralement la section ?.?.?. c-graph.tex r??? – ????-??-?? ??? Figures r??? – ????-??-?? . Bl . Bc . Br . bl . bc . br . cl . cc . cr . tl. tc. tr. F????? ?.? — Centres de rotation possibles désignés par une suite de deux lettres. La première lettre désigne la hauteur de l’origine : b tout en bas, B sur la ligne de base (voir ci-dessus), c au centre et t en haut : la deuxième son emplacement horizontal : l à gauche, c au centre et r à droite, comme illustré sur la ?gure ?.?. On utilise toujours ensemble les options angle et origin, et on peut les combiner avec d’autres options comme sur l’exemple ?.?. \usepackage{graphicx} Bla \includegraphics[height=1cm, angle=45, origin=bl] {mire-tele.jpg} bla \includegraphics [height=1cm, angle=45, origin=br]{mire-tele.jpg} bla. Bla bla bla. E?????? ?.? — Inclusion de graphiques avec rotation En?n, il est possible de recadrer une image. On utilise pour cela viewport=?x? y? x? y??, qui a le sens suivant : recadrer l’image en utilisant de rectangle dont le coin inférieur droit a pour coordonnées ?x?,y?? et le coin supérieur gauche ?x?,y??. L’origine des coordonnées est le coin inférieur droit de l’image ; l’orientation positive est vers la droite et vers le haut ; on peut préciser une unité pour chaque coordonnée. \usepackage{graphicx} Du texte puis une image \includegraphics[viewport=4cm 3cm 9cm 7cm, width=0.5cm]{mire-tele} ici recadrée sans découpage. La même image recadrée \includegraphics[viewport=4cm 3cm 9cm 7cm, clip, width=0.5cm]{mire-tele} et cette fois correctement re-découpée. Du texte puis une image ici recadrée sans découpage. La même image recadrée et cette fois correctement re-découpée. E?????? ?.? — Recadrage et découpage d’image Il faut de plus, dans la plupart des cas, utiliser l’option clip qui dit à LATEX de supprimer réellement la partie de l’image qui déborde du cadre ainsi dé?ni : dans le cas contraire, il n’ajustera que les « dimensions logiques » de l’image sans couper le reste, et le résultat sera le plus souvent une superposition malencontreuse avec le texte autour, comme dans l’exemple ?.?. Notez, dans ce même exemple, que les coordonnées du nouveau cadre sont plus grandes (9cm par exemple) que la taille ?nale (0.5cm) : elles sont calculées par rapport à la taille de l’image avant mise à l’échelle. ?? c-graph.tex r??? – ????-??-??r??? – ????-??-?? ?.? Placement ?.? Placement ?.?.? Simple Par défaut, LATEX n’applique aucune règle particulière pour placer les images : elles apparaissent à l’endroit où la commande \includegraphics est placée ; par exemple au milieu de deux mots comme dans l’exemple ?.?, ce qui n’est souvent pas l’e?et désiré. Le plus simple pour inclure des images en dehors d’un paragraphe, c’est d’utiliser un environnement center qui contiendra uniquement l’image : ceci la centrera horizontalement, mais aussi placera un peu d’espace vertical avant et après. En fait, même pour une image occupant tout la largeur disponible (option width=\linewidth), il est souvent intéressant d’utiliser un environnement center, juste pour cet espacement vertical (et aussi pour supprimer le retrait de début de paragraphe). ?.?.? Habillé par le texte On peut au contraire ne pas vouloir séparer l’image du texte qui l’entoure, mais l’inclure au milieu d’un paragraphe avec le texte qui « coule » autour. C’est ce qu’on appelle une image habillée par du texte. Il existe plusieurs modules en LATEX qui fournissent ce genre de possibilité. Malheureusement, il n’y a pas un module unique proposant toutes les options possibles, et les syntaxes utilisées sont assez variées (et pas toujours très intuitives). De plus, ils ne fonctionnent pas en toutes circonstances : par exemple, près d’un titre de section, d’une liste, ou en mode deux colonnes, des problèmes 8 peuvent survenir. Voyons cependant ce qu’on peut faire dans des cas simples avec les deux ? principaux modules existants : wrapfig ¹° et picinpar ¹¹. \begin{wrapfigure}[?nb ligne?]{?lrio?}{?largeur?}[?débordement?] ??gure? \end{wrapfigure} ?texte? Il est facile avec wrapfig de placer un ?gure dans l’angle en haut à gauche ou en haut à droite d’un paragraphe, comme illustré par l’exemple ?.?. Il faut pour cela mettre l’image dans un environnement wrapfigure et la texte qui doit couler autour après cet environnement. Dans sa forme la plus simple, l’environnement wrapfigure prend deux arguments (en plus de son contenu) : le premier est une lettre indiquant de quel côté l’image doit être placée : l (left) à gauche, r (right) à droite, i (inside à l’intérieur (à droite sur les pages de gauche et réciproquement), o (outside) à l’extérieur. Ces deux dernières options ne sont bien sûr utiles que si le document est en recto/verso (voir page ??). Le deuxième argument de wrapfigure est l’espace horizontal à réserver à l’image. C’est à vous de prendre soin d’indiquer une dimension légèrement plus grande que la taille de l’image, comme ?. Par exemple, en rédigeant ce polycopié, j’ai du recourir à une astuce pour l’exemple ?.? car wrapfigure ne fonctionne pas dans mon environnement d’exemple habituel, et j’ai mis longtemps à trouver un réglage satisfaisant pour l’exemple ?.? car window ne fonctionne plus dès que la largeur de colonne est trop petite. ?. En fait, il y en a un troisième, picins, mais il n’est pas inclus dans TEX Live pour des raisons de licence ; je n’en dirai donc pas plus à son sujet. ??. http://ctan.org/pkg/wrapfig ??. http://ctan.org/pkg/picinpar c-graph.tex r??? – ????-??-?? ??? Figures r??? – ????-??-?? \usepackage{graphicx, wrapfig} \begin{wrapfigure}{l}{2.4cm} \includegraphics[width=2cm]{lion.png} \end{wrapfigure} Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, \dots Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, ... E?????? ?.? — Habillage dans le coin en haut à droite dans l’exemple ?.? : 2.4cm pour une image de 2cm, de façon à éviter que le texte soit « collé » sur l’image. La dimension verticale, en revanche, est calculée automatiquement. Vous pouvez cependant l’ajuster au besoin en indiquant le nombre de lignes qui doivent être raccourcies comme premier argument optionnel. Le dernier argument optionnel sert, lui, à faire déborder l’image dans la marge d’une longueur donnée. Il est seulement possible, avec wrapfig, de placer l’image sur un des deux côtés, en haut. Pour la placer au milieu du texte, il faut recourir au module picinpar et à son environnement window. \begin{window}[?lignes avant?,?lcr?,{??gure?},?titre?] ?texte? \end{window} Observez tout de suite la syntaxe très di?érente de celle de wrapfigure (et assez déroutante, je vous l’accorde) : la ?gure est le troisième élément d’une liste séparée par des virgules, et le texte qui l’entoure est le contenu de l’environnement. Deux pièges subtils vous guettent : il ne faut pas mettre d’espace après ni avant les virgules, et penser à entourer d’accolades la commande de la ?gure (LATEX gère mal les imbrications de crochets [] carrés) comme dans l’exemple ?.?. \begin{window}[1,c,% {\includegraphics[width=2em]{lion}},% \centering Lui] Un paragraphe au milieu duquel apparaît ici la chère mascotte de \LaTeX{} : un lion à lunettes. Rappelons que celle de \TeX{} (le programme sur lequel est basé \LaTeX{}) est un lion \emph{sans} lunettes mais en toge. \end{window} Un paragraphe au milieu duquel apparaît ici la de LATEX : un Rappelons que (le programme Lui chère mascotte lion à lunettes. celle de TEX sur lequel est basé LATEX) est un lion sans lunettes mais en toge. E?????? ?.? — Image en fenêtre dans le texte Les « arguments » de window sont d’abord le nombre de lignes complètes dans le paragraphe avant le début de la ?gure, puis l’emplacement de la fenêtre : l à gauche, c au centre et r à droite. Viennent ensuite la ?gure elle-même et un titre qui sera placé au-dessous. ?? c-graph.tex r??? – ????-??-??r??? – ????-??-?? ?.? Placement ?.?.? Flottant L’habillage par du texte convient bien aux ?gures de dimensions réduites. Les ?gures plus larges gagneront à être placées hors de tout paragraphe, dans un environnement center, comme expliqué précédemment. Dès que la hauteur de la ?gure devient importante, un nouveau problème se pose : les coupures de pages. Imaginons en e?et une page remplie environ à ??? au moment ou survient une ?gure qui fait environ une demie-page de hauteur : il n’y a donc pas la place d’insérer la ?gure ici, et LATEX est obligé de changer de page, mais le résultat sera moche ¹² car pour aligner le bas de page, il va falloir étirer démesurément les espaces verticaux présents dans la page. Il su?rait pourtant de déplacer un peu de texte avant la ?gure pour que tout rentre dans l’ordre. Le problème, c’est que c’est LATEX et pas vous qui décidez des coupures de pages. Il faut donc que ce soit aussi lui qui décide ou placer la ?gure (sur cette page ou la suivante, et éventuellement après du texte qui la suit) en fonction des sauts de page. Ceci s’appelle faire ?otter la ?gure, qu’on appelle alors un ?ottant. Mais, maintenant que la ?gure peut se promener, il faut pouvoir s’y référer : pour cela on pensera à la munir d’un titre et à la numéroter. \begin{figure}[?htbp?] ??gure? \caption[?lof?]{?titre?} \label{?clé?} \end{figure} \listoffigures Pour rendre une ?gure ?ottante, il su?t de la placer dans un environnement figure. Attention, cet environnement est très mal nommé : il ne sert pas à construire des ?gures ¹³ ou à les insérer, uniquement à les faire ?otter ! Il faut être conscient, en l’utilisant, que votre ?gure va très probablement être placée ailleurs que là ou elle est dans le source ; surtout, tant que la page contenant la ?gure, ainsi que la suivante, le placement peut être incohérent : c’est normal — continuez et tout rentrera dans l’ordre. À l’intérieur de l’environnement figure, une nouvelle commande, \caption, est disponible, qui sert à donner un titre et un numéro la ?gure. Cette commande est similaire aux commandes de sectionnement en ce qu’elle admet un argument optionnel ?lof? qui permet de donner un titre alternatif (par exemple, plus court) qui sera utilisé pour la liste des ?gures. Celle-ci s’obtient de façon automatique avec la commande \listoffigures, similaire à \tableofcontents. Le titre sera placé en-dessous ou au-dessous de la ?gure, selon que dans le source la commande \caption est placée avant ou après la ?gure elle-même. Ceci ne sera plus forcément le cas avec certains modules que nous verrons à la section ??.?. Par ailleurs, on peut utiliser les mécanismes standard de références de LATEX (vu en section ?.?) pour se référer au numéro de la ?gure avec \ref{?clé-?gure?}. Pour cela, il su?t comme d’habitude de dire \label{?clé-?gure?}, mais il faut prendre garde de placer cette commande après la commande \caption, et non pas au début de l’environnement figure : en e?et c’est \caption qui produit le numéro, et \label ne peut pas fonctionner correctement avant que le numéro ne soit produit. ??. Et provoquera une complainte du type Underfull \vbox de la part de LATEX. ??. En fait, il est strictement équivalent à l’environnement table que nous verrons en section ?.?.?, sauf que \caption écrira « ?gure » ou « table », et que l’objet sera ajouté à la liste des ?gures ou des tables. c-graph.tex r??? – ????-??-?? ??? Figures r??? – ????-??-?? Même si c’est LATEX qui décide ou place la ?gure, on peut in?uencer sa décision au moyen de l’argument optionnel de figure, qui contient une suite de lettre parmi h (here, ici), t (top, en haut d’une page, par exemple la suivante), b (bottom, en bas d’une page) et p (page, sur une page à part, en comportant que des ?ottants). Les options par défaut sont tbp. Il est souvent raisonnable de rajouter l’option h, ce qui donne htbp, mais c’est en général une mauvaise idée d’enlever des options pour essayer de forcer le ?ottant à être placé où vous voulez : rappelez-vous que l’intérêt même des ?ottants est que LATEX s’occupe à votre place de la lourde tâche de leur trouver un endroit convenable. Parfois, on veut absolument placer une ?gure à un endroit précis, mais on aimerait bien qu’elle soit numérotée et ait un titre comme les autres. Dans ce cas, il faut charger le module caption ¹4, qui permet d’utiliser la commande \caption en dehors de tout environnement ?gure, et placer la ?gure à la main (par exemple dans un environnement center). En?n, il faut savoir que l’environnement \figure ne règle pas lui-même l’alignement horizontal de l’image : pour cela, on utilise les mécanismes standard de LATEX, vus à la section ?.?. Pour une fois, on aura intérêt à utiliser une commande comme \centering plutôt que l’environnement center. En e?et, ce dernier ajoute de l’espace vertical, ce qui est inutile voire dérangeant car l’environnement figure s’en est déjà chargé. Nous verrons en section ??.? d’autres moyens de gérer l’alignement des ?ottants. La nature d’un ?ottant étant de ?otter (sans blague), il n’y aurait pas beaucoup d’intérêt à vouloir en faire rentrer un dans une petite case comme tous les exemples de ce polycopiés. Je renvoie donc aux exercices ¹5 pour des exemples de ?gures ?ottantes. ?.?.? Une astuce classique Les ?ottants sont parfois un moyen un peu extrême de résoudre le problème du placement des ?gures. Une solution intermédiaire, qui n’est pas spéci?que aux ?gures, est fournie par la commande \afterpage du module afterpage ¹6. \afterpage{?matériel?} Sa syntaxe est simple : elle admet un seul argument obligatoire, qui est une liste de commandes arbitraires (par exemple, \includegraphics, \caption, etc. mais pas figure qui n’a pas sa place ici) qui seront exécutées seulement au tout début de la page suivante. Ceci permet d’attendre tranquillement la prochaine coupure de page pour placer une ?gure dont on est pas sûr qu’elle tienne sur la page en cours, quand on ne veut pas laisser LATEX choisir sa place lui-même. C’est par exemple ce mécanisme que j’ai utilisé pour placer le schéma des dimensions du document, page ??. J’ai ainsi ¹7 inséré la commande \afterpage{\layout} juste après les mots « sur la page suivante » page ?? et le schéma s’est automatiquement déplacé à la page suivante comme annoncé. ??. http://ctan.org/pkg/caption ??. Remarque technique : les exercices comme les transparents mentionnent floatrow, qui n’est ?nalement traité qu’à la section ??.? dans ce polycopié. ??. http://ctan.org/pkg/afterpage ??. Je mens un peu : d’une part, j’ai aussi inséré des \label pour pouvoir y faire référence ici : d’autre part, \layout produit par défaut deux pages de schéma en mode recto/verso : j’ai donc utilisé une commande modi?ée pour obtenir le résultat voulu. ?? c-graph.tex r??? – ????-??-??r??? – ????-??-?? ?.? Autres ?oritures graphiques ?.? Autres ?oritures graphiques ?.?.? Rotations et mises à l’échelle Dans les sections précédentes, on a étudié relativement en détails la commande principale fournie par le module graphicx : \includegraphics. Cette commande permet en particulier d’appliquer des rotations ou des a?nités orthogonales ¹8 à l’image insérée. On peut en fait faire subir le même traitement à n’importe quel texte ou plus généralement « truc » produit par LATEX. \rotatebox[origin=?lcr??tcBb?]{?angle?}{?matériel?} \scalebox{?échelle?}{?matériel?} \scalebox{?échelle h?}[?échelle v?]{?matériel?} Le sens de l’option origin de \rotatebox est celui expliqué par la ?gure ?.?, sauf qu’il ne se rapporte plus à l’image, mais à la « boîte » formée par LATEX avec le ?matériel? donné (voir section ?.? pour la notion générale de boîte). La syntaxe de \scalebox est un peu particulière (le sens de l’argument obligatoire change selon que l’argument optionnel est utilisé ou non, et l’argument optionnel est le deuxième) mais elle devrait être claire après avoir étudié l’exemple ?.?. Le lecteur féru de mathématiques remarquera immédiatement qu’une échelle horizontale négative permet d’e?ectuer une symétrie orthogonale d’axe vertical. \usepackage{graphicx} \rotatebox[origin=rb]{-10}{ça s’en va} et \rotatebox[origin=lb]{10}{ça revient}, c’est \scalebox{2}{fait} de \scalebox{1.5}[.8]{touts petits} \scalebox{-1}[2]{riens}, \dots ça s’en va et ça revient , c’est fait de touts petits , ... riens E?????? ?.? — Rotation et dilatation de texte J’espère qu’il est inutile d’attirer votre attention sur le fait qu’il ne faut user de ces possibilités qu’avec parcimonie et à bon escient ;-) ?.?.? Encadrement \fbox{?matériel?} Pour mettre une image (ou autre chose) en valeur, il peut être intéressant de l’encadrer. Ceci ce fait tout simplement avec la commande \fbox, fournie par LATEX, qui dessine un cadre simple autour de son argument. Pour des cadres un peu plus sophistiqués, on pourra essayer les commandes fournies par fancybox ¹?, illustrées par l’exemple ?.?. Comme on le constatera, les cadres arrondis ne rendent pas toujours bien (à l’écran en tout cas). On peut aussi faire des cadres en couleur, éventuellement avec un fond coloré, ou même mettre du texte sur fond coloré sans cadre. Les commandes nécessaires sont fournies par xcolor et illustrées par l’exemple ?.?. ??. En clair, de changer l’échelle suivant un axe. ??. http://ctan.org/pkg/fancybox c-graph.tex r??? – ????-??-?? ??? Figures r??? – ????-??-?? \usepackage{fancybox} \shadowbox{Ombré} ou \doublebox{doublé} ou \ovalbox{arrondi} mais c’est limite. Ombré ou doublé ou    arrondi mais c’est limite. E?????? ?.? — Cadres plus sophistiqués \usepackage{xcolor} Plus \colorbox{blue!30!white}{bleu} que le \fcolorbox{blue!70!white}{white}{bleu} de tes yeux, je ne vois rien de mieux, même le \fcolorbox{blue}{blue!30!white}{bleu} des cieux. Plus bleu que le bleu de tes yeux, je ne vois rien de mieux, même le bleu des cieux. E?????? ?.? — Boîtes colorées ?.?.? Une police de symboles En?n, pour insérer de petits dessins, de la taille d’un caractères, on fait souvent appel à une police de symboles plutôt qu’à des images. Au sein d’une telle police, les caractères usuels sont remplacés par des symboles, auxquels on se réfère par leur numéro. Plusieurs polices de symboles existent pour LATEX ; une des plus standard est fournie par le paquet pifont. Pour des raisons historiques, sa documentation est dans psnfss2e.pdf ²°. Vous y trouverez notamment la liste des symboles avec leurs numéros. On peut obtenir un symbole isolé au moyen de la commande \ding{?numéro?}. Le module fournit quelques autres commande utiles, comme l’environnement dingautolist, qui fournit une liste numérotée par des symboles consécutifs : il su?t d’indiquer le premier, comme dans l’exemple ?.?. \usepackage{pifont} Choses à faire : \begin{dingautolist}{192} \item finir le polycopié ; \item le mettre en ligne; \item téléphoner \ding{37} aux amis et faire la fête. \end{dingautolist} Choses à faire : À ?nir le polycopié ; Á le mettre en ligne ;  téléphoner % aux amis et faire la fête. E?????? ?.? — Utilisation d’une police de symboles ??. http://mirror.ctan.org/macros/latex/required/psnfss/psnfss2e.pdf ?? c-graph.tex r??? – ????-??-??