On s'est rendu compte sur #bioinfo-fr et sur #jebif (les canaux IRC sur freenode) qu'au cours des rédactions de rapports de stage ou même de thèse on avait plein de questions portant sur LaTeX et on a décidé qu'on allait se fendre de quelques articles sur LaTeX pour avoir une suite de liens appropriés à donner pour répondre aux questions. 🙂
Alors voilà le premier article, très basique, qui reprend tout (presque) au début pour prendre de bonnes habitudes.
Si vous cherchez de grandes explications sur ce qu'est LaTeX, comment ça marche à l'intérieur ou des explications très poussées, passez votre chemin, notre but ici est de faire un petit guide de survie en français pour les jeunes bioinfos qui découvrent LaTeX juste avant leur stage (ou leur thèse, on sait jamais). 😀
Installation de LaTeX et de Texmaker
La méthodologie d'installation de LaTeX dépend de votre OS.
Si vous êtes sous une distribution GNU/Linux
C'est assez simple, vous ouvrez un terminal et vous tapez les commandes suivantes (si vous n'êtes pas sous Debian ou une de ses dérivées, adaptez, vous êtes grands) :
1 |
sudo apt-get install texlive-full |
Et pour installer Texmaker qui est un éditeur multi-plateforme fait pour LaTeX que je vous suggère d'utiliser au moins au début :
1 |
sudo apt-get install texmaker |
Si vous êtes sous un autre système d'exploitation
Dans ce cas là je ne vous serai pas d'une grande aide pour l'installation, je vous suggère de suivre ces liens qui vont vous expliquer mieux que moi :
https://openclassrooms.com/courses/redigez-des-documents-de-qualite-avec-latex/installer-latex
Pour Texmaker je vous renvoie au site : http://www.xm1math.net/texmaker/download.html
On me souffle dans l'oreillette qu'il existe un autre éditeur pour LaTeX qui serait encore mieux (mais je ne l'ai jamais utilisé) : texstudio (http://www.texstudio.org/). Je vous suggère de tester les 2 mais sachez que je vais utiliser Texmaker dans les screenshots et dans les vagues explications de fonctionnement que je vais donner.
Les types de documents LaTeX
Il existe une foule de types de documents que vous pouvez produire avec LaTeX. Voici les quelques types de documents que nous présenterons au fil de la série d'articles :
- la classe article qui sert de classe de « base » elle sert aux articles scientifiques, aux rapports, à présenter la documentation d'un programme ou d'un paquet, et d'une manière générale à une foule de choses
- la classe report qui sert pour les rapports longs contenant des chapitres, les thèses, etc
- la classe beamer qui sert pour les présentations
- la classe tikzposter qui sert pour fabriquer des posters
- la classe lettre qui sert à écrire des lettres (vous ne l'auriez pas deviné…)
- la classe book qui sert à écrire de vrais livres
Soyez patients, nous allons nous focaliser sur la classe article pour l'instant parce que c'est celle que vous utiliserez probablement le plus dans votre vie.
D'ailleurs pourquoi est-ce que je vous parle de types de documents comme ça dès le début ? C'est parce que la première chose que vous allez devoir écrire dans votre document LaTeX c'est la commande documentclass qui va préciser à LaTeX avec quoi il va bosser (et lui dire quelles commandes sont les commandes qu'il peut utiliser).
Place à la pratique !
Hello World!
Pour commencer votre premier document LaTeX vous allez ouvrir Texmaker et cliquer sur l'icône de nouveau document et taper dans le nouveau cadre :
1 2 3 4 5 6 |
\documentclass[paper=a4, fontsize=11pt, ]{article} \begin{document} Hello World! \end{document} |
Qu'est ce qu'on vient de faire ? On vient de dire à LaTeX qu'on allait travailler avec la classe de document article , au format A4 et avec une taille de police de 11pt.
Viennent ensuite les balises \begin{document} et \end{document} entre lesquelles on écrit le document, ici la phrase Hello World! (on ne se refait pas…). Par la suite, on appellera préambule toute la partie qui est comprise entre le \documentclass et le \begin{document}.
Vous allez maintenant enregistrer votre merveilleux document (je vous laisse trouver le bouton idoine ^^) . Puis vous allez cliquer sur le bouton « Compilation rapide » et sélectionner « PDFLaTeX » qui est le nom du compilateur que nous allons utiliser. Vous pouvez désormais cliquer sur la petite flèche bleue à gauche du bouton « PDFLaTeX » et lancer votre première compilation d'un document LaTeX, à la suite de quoi vous pouvez cliquer sur la petite flèche bleu à gauche du bouton « Voir PDF ».
Après avoir cliqué sur « Voir PDF » une fenêtre devrait s'ouvrir à l'intérieur avec un document qui ressemble à ça :
Félicitations 🙂
Et si on mettait unE auteurE, un titre, une date ?
Bref, si on ajoutait une « page » de titre… Pour ça on va utiliser la commande \author , la commande \title et la commande \date dont les noms sont suffisamment explicite pour que je ne m'embête pas à les décrire.
1 2 3 |
\author{Pauline Pommeret} \title{Mon premier document \LaTeX} \date{\today} |
On utilise la commande \today qui met la date du jour de compilation ce qui peut s'avérer très pratique et la commande \LaTeX qui permet d'écrire LaTeX comme ce mot est supposé s'écrire (patience vous allez bientôt voir :)).
Mettez tout ceci dans votre préambule et recompilez puis regardez le PDF. Vous voyez un changement ?
Non, parce qu'on a oublié de dire à LaTeX qu'il fallait afficher le titre… En effet, dès qu'on veut faire faire un truc à LaTeX, il faut lui dire. Comment ? En ajoutant ceci
1 |
\maketitle |
dans le corps du document, c'est-à-dire après le \begin{document} .
À ce stade, votre document LaTeX devrait ressembler à ça :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
\documentclass[paper=a4, fontsize=11pt, ]{article} \author{Pauline Pommeret} \title{Mon premier document \LaTeX} \date{\today} \begin{document} \maketitle Hello World! \end{document} |
Et vous devriez avoir un document qui ressemble à ça :
Parle moi français steuplaît
Dammit. Il va falloir dire à LaTeX qu'il faut écrire la date (et pas que…) en français. Pour cela il faut ajouter encore une commande dans le préambule : une commande qui lui dit de charger le paquet babel avec l'option (de langage ici) français. Pour cela on tape :
1 |
\usepackage[frenchb]{babel} |
Relancez la compilation et rechargez votre PDF et ça devrait être bon, la date du jour (chez moi 12 novembre 2016) devrait s'afficher correctement en français !
que maintenant on se traîne un Warning de compilation supplémentaire qui nous dit
1 |
Warning: OT1 encoding should not be used for French. |
Vous aurez plein de warnings en LaTeX que vous apprendrez à trier et à ignorer quand ça vous arrange, celui là il faut pas l'ignorer. Vous me faites pas confiance ? OK, tentez de remplacer « Hello World! » par ce pangramme « Voix ambiguë d'un cœur qui, au zéphyr, préfère les jattes de kiwis. » dans votre document LaTeX. Recompilez et regardez le PDF.
Vite le préambule !
Oui, bien vu, il va falloir ajouter des choses au préambule pour que tout se passe correctement. En fait, je vais vous faire rajouter plusieurs choses pour que les choses se passent bien à l'avenir.
Comme vous l'avez certainement compris on va ajouter des tas et des tas de choses au préambule pour faire en sorte que LaTeX fasse ce qu'on exige de lui. Aussi, on va mettre une partie du préambule dans un fichier séparé que vous pourrez linker (avec un lien symbolique si vous êtes sous une distribution GNU/Linux, en copiant/collant le fichier au bon endroit si vous êtes sous un truc que je sais pas comment ça fonctionne) quand vous en aurez besoin de faire un nouveau document.
Alors veuillez enregistrer ce pavé (vous n'êtes pas obligé de tout lire et tout comprendre tout de suite mais sachez que la ligne qui répare le warning est la ligne contenant fontenc) dans un fichier appelé preambule.tex localisé dans le même dossier que votre fichier de Hello World.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
%---------------------------------------------------------------------------------------- % PACKAGES DE BASE %---------------------------------------------------------------------------------------- %-% Bonjour, je parle une langue avec des caractères "étranges", tu peux gérer l'encodage %-% de ce que j'écris et de la police de sortie ? Ça serait cool ! \usepackage[utf8x]{inputenc} \usepackage[T1]{fontenc} \usepackage{lmodern} %-% Coucou LaTeX, applique les règles françaises stp \usepackage[frenchb]{babel} %-% Coucou LaTeX, applique les règles britanniques stp %\usepackage[british]{babel} %-% À décommenter si jamais une autre police est demandée %\usepackage{helvet} %\usepackage{courier} %-% Pour rotationner une page %-% http://tex.stackexchange.com/questions/111648/rotating-vs-lscape-vs-pdflscape \usepackage{pdflscape} %-% Supposons que vous définissiez la macro suivante %-% \newcommand{\apples}{AppleS} %-% si vous laissez tel quel, l'espace entre la macro et le reste du texte va être bouffé : %-% "The nice \apples in my garden." devient "The nice AppleSin my garden." %-% \newcommand{\apples}{AppleS } ne va pas vous sauver : %-% "I love \apples." devient "I love AppleS ." %-% Pour que la vie soit belle, il faut utiliser : %-% \newcommand{\apples}{\textsf{AppleS}\xspace} \usepackage{xspace} %-% Pour remplir avec du "Lorem ipsum", pour cela utiliser la commande \lipsum[1-6] \usepackage{lipsum} |
Note : si vous utilisez babel > 3.0 vous devriez utiliser le paquet babel de la façon suivante :
1 2 3 |
\documentclass[french] \usepackage{babel} |
Changement dans le corps du document
Maintenant qu'on a un preambule.tex , on va pouvoir l'inclure dans le document et réduire la taille du document qui nous intéresse, il ne contiendra plus que le « contenu » réel et supposé intéressant.
Votre fichier hello_world.tex devrait ressembler à ça désormais :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
\documentclass[paper=a4, fontsize=11pt, ]{article} \input{preambule} \author{Pauline Pommeret} \title{Mon premier document \LaTeX} \date{\today} \begin{document} \maketitle Voix ambiguë d'un cœur qui, au zéphyr, préfère les jattes de kiwis. \lipsum \end{document} |
Vous remarquerez la commande \input qui nous resservira plus tard à inclure d'autres fichiers (typiquement des sections du texte qui sont longues et qui méritent, par confort principalement, d'être mises dans un fichier à part) ; et la commande \lipsum qui nous sert à rajouter du Lorem ipsum, c'est-à-dire du texte de remplissage pour voir ce que ça donne !
Une petite page de garde toute simple
Pour avoir une page de garde (assez simple je l'admets, mais on travaillera sur ça plus tard, promis) à votre merveilleux document, vous pouvez glisser après le \maketitle la commande \clearpage qui va dire à LaTeX de terminer la page à cet endroit et de passer la suite du texte à la page suivante :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
\documentclass[paper=a4, fontsize=11pt, ]{article} \input{preambule} \author{Pauline Pommeret} \title{Mon premier document \LaTeX} \date{\today} \begin{document} \maketitle \clearpage Voix ambiguë d'un cœur qui, au zéphyr, préfère les jattes de kiwis. \lipsum \end{document} |
Mais comme je suis une flemmarde et que je préfère les options aux commandes, je préfère passer titlepage en option à mon \documentclass qui va me faire l'effet du \clearpage . Mais après, c'est vous qui voyez…
Un peu de structuration du document
Il existe plusieurs niveaux de structuration du document en LaTeX, on va se concentrer sur celles qui sont disponibles dans la classe de document que l'on utilise actuellement : article.
Les voici de la plus « grosse » à la plus « petite » :
- \part{Nom de la partie}
- \section{Nom de la section}
- \subsection{Nom de la sous-section}
- \subsubsection{Nom de la sous-sous-section}
- \paragraph{Nom du paragraphe}
- \subparagraph{Nom du sous-paragraphe}
La granularité est déjà plutôt importante. Voyez un peu le résultat :
Et pour celles ou ceux qui n'auraient pas réussi à obtenir le résultat ci-dessus, voici le code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
\documentclass[paper=a4, fontsize=11pt, titlepage, ]{article} \input{preambule} \author{Pauline Pommeret} \title{Mon premier document \LaTeX} \date{\today} \begin{document} \part{Nom de la partie} \section{Nom de la section} \subsection{Nom de la sous-section} \subsubsection{Nom de la sous-sous-section} \paragraph{Nom du paragraphe} Voix ambiguë d'un cœur qui, au zéphyr, préfère les jattes de kiwis. \subparagraph{Nom du sous-paragraphe} \lipsum[1-2] \end{document} |
D'ailleurs, notez que si vous voulez des éléments de structuration non numérotés, il suffit d'ajouter un astérisque à la fin de la commande : \part*{Nom de la partie non numérotée}.
Table des matières
Bon, c'est bien beau la structuration du document mais c'est pas très utile si on ne peut pas faire une table des matières pour naviguer dans le document (même si ok le document ne fait qu'une page pour l'instant, c'est le principe qui compte :o).
Il suffit d'ajouter, de préférence, après le \maketitle si vous voulez votre table des matières au début (vous pouvez la mettre en plein milieu de votre texte si ça vous chante d'ailleurs, ou à la fin de votre document, juste avant le \end{document} ) la commande suivante :
1 |
\tableofcontents |
Recompilez deux fois (la table des matières exige la plupart du temps deux compilations pour être exacte, c'est ainsi) et rechargez le PDF pour admirer le résultat !
Vous êtes un peu déçuEs je pense… Où sont passés les paragraphes et les sous-paragraphes ?! Pourquoi n'apparaissent-ils pas dans la table des matières ? Bah c'est comme tout en LaTeX il va falloir lui dire de les faire apparaître. Je vous propose d'ajouter les incantations suivantes dans votre preambule.tex et de faire joujou avec le chiffre indiqué entre {} :
1 2 3 4 5 6 7 8 9 10 |
%---------------------------------------------------------------------------------------- % EN-TÊTES, PIEDS DE PAGE, TOC, APPENDIX %---------------------------------------------------------------------------------------- %-% Profondeur de la ToC \setcounter{tocdepth}{6} |
Et tadà !
On va s'arrêter là pour le premier article, vous avez déjà beaucoup progressé :). La prochaine fois on parlera de comment ajouter des figures et des tables, c'est-à-dire les flottants.
Merci à mes merveilleu.ses.x relecteur.rice.s pour leurs commentaires, ajouts et correction orthographique : Norore, HedJour, Clem_ !
Krapace
décembre 7, 2016 à 1:01
Perso j'utilise pour la gestion de caractère : \usepackage[utf8, utf8x]{inputenc}
Il est possible d'utiliser plusieur langue mais c'est la dernière qui est utilisé pour la gestion de caractère regionaux (je pense a l'espagnol par exemple ou le cyrilique)
Et pour la gestion de image \usepackage{graphicx} fait le taf, mais parfois il faut en ajouter d'autre pour une mise en page plus poussée
Chopopope
décembre 12, 2016 à 9:44
Tu m'intéresses… Tu penses à quoi en particulier ?
Maël
décembre 7, 2016 à 4:00
Pour une prise en main rapide LyX (https://www.lyx.org/) est pratique. C'est un éditeur WYSIWYG qui utilise LaTeX pour le rendu final. Un fichier .lyx contient du LaTeX plus des infos de configuration. L'installateur Windows inclut une distribution LaTeX.
Je l'utilise encore même si ça fait plus d'une dizaine d'année que je côtoie LaTex. Les raccourcis claviers permettent la prise de notes rapide. Je ne pourrais pas prendre mes cours en LaTex sans ce logiciel par exemple.
Ensuite, pour une mise en page plus poussée, j'exporte en (pdf)latex les différentes parties et je compile un document maître.
Sinon il est important de mentionner ShareLaTeX, l’équivalent de Google Docs pour l'édition collaborative LaTeX. Il est très utilisé en milieu académique. Ce n'est pas évident sur le site officiel, mais le code source et libre et il est possible de créer sa propre instance de ShareLaTeX sur son serveur.
Pandoc est un autre outil très utile. Il permet de convertir des documents entre n'importe quel type de format (même Word LaTeX !). C'est pratique pour transformer des notes texte brut (Markdown, reStructuredText, org-mode) en LaTex. Ce logiciel est aussi la preuve qu'un prof de langue en philosophie peut coder en Haskell...
obrow
décembre 7, 2016 à 6:27
Super inititative ! LateX devrait être connu de toutes et tous. Je ne comprends d'ailleurs pas pourquoi il n'est pas enseigné partout;
Il y à un autre outil encore plus exceptionnel et il s'agit de orgmode (qui est un mode emacs).
Avec lui vous pouvez ... bah tout faire... en mode texte brut !
Editeur de texte, tableur, gestion de projet, gestionnaire de tâches, agenda, timesheets, rapports, présentations, graphiques, dessins...
Et le miracle dans tout ça c'est qu'à la fin vous lui dites : "Sors moi tout ça en LaTeX ou en odt ou en ooxml ou en html ou en twitter bootstrap ou en revealjs ou en wiki..."
Donc avec un seul logiciel vous pouvez gérer toute votre vie à une vitesse folle moyennant comme LaTeX un petit investissement au départ.
Bref c'est une tuerie ! http://orgmode.org/fr/
ps : même ce post a été écrit dans orgmode puis automatiquement balancé dans le formulaire !
Grain de sel
décembre 7, 2016 à 8:52
Pour l'édition de LaTeX on peut également utiliser Kile à la place de Texmaker.
→ http://kile.sourceforge.net/
lucas
décembre 8, 2016 à 2:02
Concernant le problème d'espacement après une macro, la technique «officielle» est de dire à TEX de ne pas parser le caractère suivant.
Ainsi, au lieu de :
\newcommand{\apples}{apples\xspace}
j'ai des \apples in mein bag.
Utiliser la notation complète de l'appel de fonction :
\newcommand{\apples}{apples}
j'ai des \apples{} in mein bag.
Je note ça surtout pour éviter les trolls qui pourraient vouloir insinuer que latex a besoin d'un package pour gérer les espaces.
Merci pour la notation avec xspace, elle est moins lourde 🙂
Et au passage, j'en profite pour larger une de mes macros préférées:
\newcommand{\Figure}[1]{figure~\ref{fig:#1}} % idem pour Table, Equation, etc...
Qui s'utilise lorsqu'on a des figures du type :
\begin{figure}
% bla bla bla image bla bla bla
\label{fig:MesVacancesPendantLaThèse}
\end{figure}
Permettant de les référencer simplement :
J'en ai trop pris gros, comme montré en \Figure{MesVacancesPendantLaThèse}.
L'intérêt de préfixer par «fig:», c'est que les tables sont préfixées par «tab:», etc… Et donc il est possible d'utiliser le même label pour la même donnée. Par exemple, la \Figure{EvolTemperature} est une représentation graphiques des données dans \Table{EvolTemperature}. Lisible et simple, AMHA.
Pareil, ne pas hésiter à coller des macros pour les noms difficiles à retenir/écrire :
\renewcommand{\O}[1]{$\mathcal{O}(#1)$} % big O notation
\newcommand{\puceronLatin}{\emph{Acyrthosiphon pisum}} % nom latin du puceron
\newcommand{\PMDP}{\emph{La petite maison dans la prairie}} % nom long à écrire
\newcommand{\RNA}{\gls{RNA}} % shortcut pour le glossaire
Et, par exemple ici pour un document double page, une commande permettant de passer à la page de gauche suivante, très utile pour forcer la mise en page.
\newcommand*\cleartoleftpage{%
\clearpage
\ifodd\value{page}\hbox{}\newpage\fi
}
Les macros c'est l'ordinateur qui travaille à la place de l'humain.
Donc les macros, c'est la vie.
Chopopope
décembre 12, 2016 à 9:47
En fait, c'est un fail de copier/coller la présence macro avec \xspace (qui est au demeurant bien plus pratique que la version « officielle », on est d'accord), elle aurait jamais du être présentée dans cet article. On va dire que c'est du teasing 🙂
Sinon, pour le reste… chut… Faut pas spoiler !! 😉
Les macros viendront en temps voulu, promis, et le glossaire aussi, mais pas tout de suite, je suis partisane de la progression douce 🙂
Alice
décembre 9, 2016 à 9:10
Il est possible de partager un document à la manière d'un google drive ou google doc avec les site ShareLaTeX et Overleaf(anciennement WriteLaTeX). Ce système est très pratique lors de la rédaction de rapports de projet de groupe ou qu'un directeur de thèse / maitre de stage (si celui-ci connait un peu le langage) commente directement sur le document, ce qui est impossible sur un PDF.