Bon maintenant qu'on sait compiler et insérer des flottants, un truc critique à voir c'est comment mettre en forme : mettre en italique, en emphase, en gras, souligner, faire des listes à puces, insérer du code…
Préparez-vous, ça risque d'être un peu long :). (Et par un peu long je veux aussi dire un peu enquiquinant, mais il faut y passer…)
Mise en forme du texte
Faire joujou avec la police
Par défaut, LaTeX met les caractères en forme droite en minuscule. On peut changer cela 🙂
Mise en emphase
La commande \emph{texte} permet de mettre de l'emphase sur le texte entre accolades. Dans un contexte « normal » c'est-à-dire droit, le texte sera mis en italique, et dans un contexte italique le texte sera mis en forme droite. C'est très pratique pour mettre en évidence du mot dans un texte.
Testez 🙂
Italique et soulignage
Pour mettre en italique le texte, rien de plus simple, il suffit d'utiliser cette commande : \textit{texte à mettre en italique}.
Si l'on souhaite, on peut également utiliser l'environnement itshape de la façon suivante :
1 2 3 |
\begin{itshape} \lipsum[1] \end{itshape} |
L'utilisation de l'environnement est assez rare, mais il faut l'avoir vu, ce qui est chose faite 🙂
Il est également possible de souligner du texte avec LaTeX avec la commande \underline{texte à souligner} mais je trouve ça très moche et ce n'est pas recommandé de l'utiliser, sauf contraintes exceptionnelles.
Petites majuscules
Pour mettre les lettres en petites majuscules (capitales), par exemple pour mettre les noms de famille des auteurs dans votre bibliographie, vous pouvez utiliser la commande \textsc ainsi :
1 |
Yann \textsc{Ponty} |
Pour mettre les chiffres en bas de casse, vous pouvez utiliser la commande \oldstylenums{0123456789}.
Lettres supérieures et inférieures
(C'est-à-dire l'équivalent des exposants et des indices en mathématiques.) Pour cela on a deux commandes très explicites : \textsuperscript{superscript} et \textsubscript{subscript}.
Mettre en gras
Pour changer la graisse des caractères, il suffit d'utiliser la commande \textbf{texte à mettre en gras}. Il existe également un environnement, comme pour la mise en italique qui s'appelle bfseries. À vous tester, mais il est encore une fois peu utilisé.
Faire joujou avec la taille
Il est possible de modifier la taille du texte :
-
{\tiny plop} : minuscule
-
{\scriptsize plop} : très très petit
-
{\footnotesize plop : très petit
-
{\small plop} : petit
-
{\normalsize plop} : normale (taille définie dans le
\documentclass)
-
{\large plop} : légèrement grande
-
{\Large plop} : grande
-
{\LARGE plop} : très grande
-
{\huge plop} : énorme
-
{\Huge plop} : gigantesque
Récapitulatif et aspects visuels
À titre de révision, et parce qu'il y a une commande intéressante dedans, je vous fournis le code source de ce tableau :
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 |
\begin{table} \centering \begin{tabular}{|c|c|c|} \hline \multicolumn{2}{|c|}{Commande} & \multirow{2}{*}{Rendu} \\ \cline{1–2} à argument & déclarative & \\ \hline $\backslash$emph\{Plop\} & \{$\backslash$em Plop \} & \emph{Plop}\\ \hline $\backslash$textit\{Plop\} & \{$\backslash$it Plop \} & \textit{Plop} \\ \hline $\backslash$underline\{Plop\} & & \underline{Plop} \\ \hline $\backslash$textsc\{Plop\} & \{$\backslash$sc Plop\} & \textsc{Plop} \\ \hline $\backslash$textsuperscript\{Plop\} & & \textsuperscript{Plop} \\ \hline $\backslash$textsubscript\{Plop\} & & \textsubscript{Plop} \\ \hline $\backslash$textbf\{Plop\} & \{$\backslash$bf Plop \} & \textbf{Plop} \\ \hline & \{$\backslash$tiny Plop\} & {\tiny Plop} \\ \hline & \{$\backslash$scriptsize Plop\} & {\scriptsize Plop} \\ \hline & \{$\backslash$footnotesize Plop\} & {\footnotesize Plop} \\ \hline & \{$\backslash$small Plop\} & {\small Plop} \\ \hline & \{$\backslash$normalsize Plop\} & {\normalsize Plop} \\ \hline & \{$\backslash$large Plop\} & {\large Plop} \\ \hline & \{$\backslash$Large Plop\} & {\Large Plop} \\ \hline & \{$\backslash$LARGE Plop\} & {\LARGE Plop} \\ \hline & \{$\backslash$huge Plop\} & {\huge Plop} \\ \hline & \{$\backslash$Huge Plop\} & {\Huge Plop} \\ \hline \end{tabular} \label{tab :plop} \end{table} |
Les guillemets
Les guillemets c'est toute une affaire… Vous avez déjà dû avoir à faire à des trolls qui vous ont dit que vous n'utilisiez pas les guillemets français quand vous le devriez etc. Heureusement, vous ne ferez plus l'erreur avec LaTeX !
Pour cela, vous allez devoir ajouter un paquet à votre préambule (avouez que ça vous manquait…) :
1 |
\usepackage[babel=true]{csquotes} |
Vous signifiez ainsi au paquet csquotes d'utiliser la langue que vous avez passé à babel (soit en paramètre, soit dans le documentclass, selon votre version de babel).
Vous pouvez alors utiliser la commande suivante :
1 |
\begin{document} |
Je vais citer une phrase maudite : \enquote{J'ai perdu !} qui va automatiquement avoir les bons guillemets !
1 |
\end{document} |
Alternativement, vous pouvez utiliser les commandes \og plop \fg{} du paquet babel, je ne vous en tiendrai pas rigueur 🙂
Points de suspension
Pour écrire des points de suspension, vous pouvez soit utiliser le caractère idoine …, soit utiliser la commande \ldots.
Tirets
Il existe plusieurs types de tirets en LaTeX (dont le signe moins en mathématiques qu'on verra plus tard) :
- - : le trait d'union
- – : le tiret demi-cadratin (utilisé pour marquer un intervalle ou les incises)
- — : le tiret cadratin (utilisé pour marquer l'alternance des personnages dans les dialogues)
Mise en forme des paragraphes
Comme vous l'avez sûrement remarqué, par défaut, le texte est justifié et commence par un alinéa. Pour commencer un nouvel alinéa, il suffit de passer une ou plusieurs lignes vides (LaTeX s'en contrefiche du nombre, mais vous pas, ça peut vous aider à vous retrouver dans votre code source).
Alignement des paragraphes
Si vous souhaitez modifier l'alignement de votre texte, c'est-à-dire qu'il ne soit plus justifié, LaTeX vous propose trois environnements (avec les commandes équivalentes) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
\begin{table} \centering \begin{tabular}{|c|c|c|} \hline Alignement & Environnement & Commande \\ \hline Justifié à gauche & \texttt{flushleft} & \texttt{$\backslash$raggedleft} \\ \hline Justifié à droite & \texttt{flushright} & \texttt{$\backslash$raggedright} \\ \hline Centré & \texttt{center} & \texttt{$\backslash$centering} \\ \hline \end{tabular} \label{tab :paragraphes} \end{table} |
Paragraphe de résumé (abstract)
Il est classique dans un article (ou un report) de commencer par un résumé (un abstract dans le jargon). Pas de panique ! LaTeX a juste le bon environnement pour vous :
1 2 3 |
\begin{abstract} Ceci est un abstract. Oui il est très court. J'avais grave la flemme. \end{abstract} |
Ce qui donne :
Le résumé prend une page entière et est traditionnellement mis avant le début du texte.
Mise en forme de code
Il existe environ douze milliards de façon de mettre en forme du code avec LaTeX, je vais vous présenter exclusivement ma préférée : minted.
Installation de minted
Pour cela il va vous falloir Python >= 2.6 parce qu'on a besoin de Pygments. Vous pouvez installer Pygments de la façon suivante :
1 |
sudo easy_install Pygments |
ou encore
1 |
pip install Pygments |
Puis utilisez votre gestionnaire de paquets pour installer le paquet minted.
Préparation de Texmaker à l'utilisation de minted
Alors en fait puisque minted cause au monde extérieur (à savoir Pygments), il faut passer une option à pdflatex pour que ça puisse se faire : l'option -shell-escape.
Pour cela, allez dans Options, Configurer TexMaker et ajouter l'option -shell-escape après la commande pdflatex.
Bon, faites gaffe à ce que vous faites avec cette option parce que l'option -shell-escape autorise LaTeX à exécuter des commandes arbitraires sur votre machine, du coup faites-le sur des documents en qui vous avez confiance…
Utilisation de minted
C'est très simple d'utiliser minted :
1 2 3 4 5 6 7 |
\begin{minted}{python} def fahrenheit(T_in_celsius): """ Returns the temperature in degrees Fahrenheit. """ return (T_in_celsius * 9 / 5) + 32 \end{minted} |
Maintenant, compilez et vous obtiendrez :
Si vous voulez insérer une seule ligne de code, vous pouvez utiliser la commande suivante :
1 |
\mint{python}|import this| |
Ce qui donne exactement le même résultat qu'avec l'environnement :
Si vous voulez inliner du code, la commande appropriée est \mintinline qui s'utilise de la façon suivante :
1 |
Lalala j'écris du texte et puis pouf je mets du code python \mintinline{python}{import this} lalala. |
Ce qui donne :
Et si, comble du luxe, vous voulez insérer un fichier entier de code (sait-on jamais pour un corrigé de TD ça peut servir…), vous pouvez utiliser la commande suivante :
1 |
\inputminted{python}{exo1.py} |
Les styles minted
Il existe une foule de styles minted que vous pouvez utiliser pour colorer votre code. Je vous suggère de consulter http://pygments.org/demo/ d'y envoyer un bout de code et de tester les différents styles qui vous seront proposé après avoir cliqué sur Highlight !
Pour voir la liste des styles disponible (ainsi qu'une brève description), vous pouvez taper dans votre terminal la commande suivante :
1 |
pygmentize -L styles |
Une fois que vous avez trouvé le style qui vous convient, vous pouvez le sélectionner dans le préambule de la manière suivante :
1 |
\usemintedstyle[langages]{nom_du_style} |
Vous pouvez mettre dans votre préambule autant de \usemintedstyle que vous voulez pour autant de langage que vous souhaitez.
Vous pouvez aussi mettre le style que vous voulez en passant cela en option à l'environnement :
1 2 3 4 5 6 7 |
\begin{minted}[style=manni]{python} def fahrenheit(T_in_celsius): """ Returns the temperature in degrees Fahrenheit. """ return (T_in_celsius * 9 / 5) + 32 \end{minted} |
Ce qui donne un style légèrement différent :
Encore un peu de flottants…
minted donne accès à l'environnement listing qui mets le code dans un environnement flottant, ce qui permet d'avoir une légende (via \caption) et une référence (via \label), tout comme pour les tables ou les figures.Voici comment procéder :
1 2 3 4 5 6 7 8 9 10 11 |
\begin{listing} \begin{minted}{python} def fahrenheit(T_in_celsius): """ Returns the temperature in degrees Fahrenheit. """ return (T_in_celsius * 9 / 5) + 32 \end{minted} \caption{Exemple de code flottant} \label{lst :exemple} \end{listing} |
Ce qui donne :
Bon, et vous savez ce qui vient :). La commande magique pour obtenir la liste des listings :
1 |
\listoflistings |
Ce qui donne :
Dammit.
Heureusement, c'est réglable. Pour cela il va falloir bidouiller un peu, et pour faire ça il faut charger le paquet minted avec une option et customiser ça comme ça (dans le préambule) :
1 2 |
\usepackage[newfloat]{minted} \SetupFloatingEnvironment{listing}{listname=Liste des Codes}% |
Et après compilation, on obtient :
Pour changer le nom de la légende en « Code » au lieu de « Listing » (parce que je préfère et que c'est plus explicite), il suffit d'utiliser la même méthode :
1 |
\SetupFloatingEnvironment{listing}{name=Code} |
Et on obtient après compilation :
Numéroter les lignes
Il est possible de numéroter les lignes en utilisant l'option linenos (soyez attentif, il y a un truc coolish ^^) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
\begin{listing}[h] \begin{minted}[linenos]{python} def f(x): return x**2 \end{minted} \ \begin{minted}[linenos]{ruby} def func puts "message" end \end{minted} \begin{minted}[linenos, firstnumber=last]{python} def g(x): return 2*x \end{minted} \end{listing} |
Voyez :
Des maths dans les commentaires ? Sure why not !
Je sais que j'ai pas encore parlé de maths en LaTeX, donc revenez à cette sous-section plus tard 🙂 ! L'important c'est que vous ayez une référence de comment faire 🙂 :
1 2 3 4 5 6 |
\begin{minted}[mathescape]{python} def sum_from_one_to(n): # Returns $\sum_{i=1}^{n}i$ r = range(1, n + 1) return sum(r) \end{minted} |
Ce qui donne :
Bon, je pourrais continuer longtemps à vous parler des trucs coolish que peut faire minted, mais l'article est déjà long et il reste d'autres trucs cool à voir, on y reviendra peut être plus tard !
Mise en forme d'algorithmes
Il existe environ douze milliards de façon de formater des algorithmes avec LaTeX, je vais vous présenter mon préféré. Pour commencer, allons mettre ce qu'il faut dans le préambule :
1 2 |
\usepackage[linesnumbered,lined,boxed,commentsnumbered]{algorithm2e} \SetAlgorithmName{Algorithme}{Liste des algorithmes} |
L'utilisation de base est assez simple, comme vous pouvez le constater avec cet exemple tiré de la documentation :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
\begin{algorithm} \SetAlgoLined \KwData{Cet article} \KwResult{Comment faire du formattage de texte et de paragraphe avec \LaTeX} initialisation\; \While{pas à la fin du document}{ lire paragraphe courant\; \eIf{comprendre}{ aller au paragraphe suivant\; paragraphe courant devient celui là\; }{ retourner au début du paragraphe\; } } \caption{Comment écrire un algorithme} \label{alg :algo-comprendre} \end{algorithm} |
Ce qui donne :
On peut faire des choses plus complexes comme celle-ci :
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 |
\begin{algorithm} \KwData{Les données\\ qui peuvent être mises sur plusieurs lignes…\\ \Indp et indentées } \KwResult{Même chose pour les résultats} %-% Définition d'une donnée custom \SetKwData{data1}{data1} %-% Définition d'une fonction custom \SetKwFunction{function1}{function1} \tcc{Un commentaire pour dire qu'on commence le code} \If(\tcc*[h]{un simple if mais avec un commentaire}){ceci est vrai}{ on fait ça, sinon rien\; \tcc{On va introduire d'autres if pour montrer que c'est possible} \eIf{on est d'accord}{ on fait ça\; }{ sinon, on fait des choses plus compliquées\; \uIf{cette première proposition est vraie}{ on fait ça\; } \uElseIf{cette autre proposition est vrai}{ on fait cela \tcc*[r]{else if} } \Else{ } } } \tcc{maintenant les boucles} \For{\forcond}{ une boucle for\; } \While{i < n}{ une boucle while contenant un repeat – until\; \Repeat{condition d'arrêt}{ faire cette chose\; } } \tcc{et on termine} \Return 0 \end{algorithm} |
Ce qui donne :
Bon bah je pense que c'est tout pour cette fois, on se retrouve bientôt !
Un grand merci à mes relecteur.rice.s : Max, Nisaea, et Pau Ssrls !
Laisser un commentaire