LaTeX : la mise en forme du texte et des paragraphes

Bon main­te­nant qu'on sait com­pi­ler et insé­rer des flot­tants, un truc cri­tique à voir c'est com­ment mettre en forme : mettre en ita­lique, en emphase, en gras, sou­li­gner, faire des listes à puces, insé­rer du code…

Pré­pa­rez-vous, ça risque d'être un peu long :). (Et par un peu long je veux aus­si dire un peu enqui­qui­nant, mais il faut y pas­ser…)

Mise en forme du texte

Faire joujou avec la police

Par défaut, LaTeX met les carac­tères en forme droite en minus­cule. On peut chan­ger cela 🙂

Mise en emphase

La com­mande 

\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 :

\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 : 

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

Tableau récapitulatif de la mise en forme de texte en LaTeX
Tableau récapitulatif de la mise en forme de texte en LaTeX

À titre de révision, et parce qu'il y a une commande intéressante dedans, je vous fournis le code source de ce tableau :

\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…) :

\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 :

\begin{document}

Je vais citer une phrase maudite : \enquote{J'ai perdu !} qui va automatiquement avoir les bons guillemets !

\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) :

Alignement des paragraphes en LaTeX
\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 :

\begin{abstract}
Ceci est un abstract. Oui il est très court. J'avais grave la flemme.
\end{abstract}

Ce qui donne :

Aspect du résumé (qui dépend encore une fois de babel)
Aspect du résumé (qui dépend encore une fois de babel)

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 :

sudo easy_install Pygments

ou encore

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

  :

\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 :

Et hop ! De la coloration syntaxique.

Si vous voulez insérer une seule ligne de code, vous pouvez utiliser la commande suivante :

\mint{python}|import this|

Ce qui donne exactement le même résultat qu'avec l'environnement :

Toujours de la coloration syntaxique !

Si vous voulez inliner du code, la commande appropriée est \mintinline qui s'utilise de la façon suivante :

Lalala j'écris du texte et puis pouf je mets du code python \mintinline{python}{import this} lalala.

Ce qui donne :

Du code inliné \o/

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 :

\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 :

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 :

\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 :

\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 :

Utilisation du thème manni alors que le thème vim a été utilisé pour l'ensemble du document.

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 :

\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 :

Et tada, un environnement flottant pour le code !!

Bon, et vous savez ce qui vient :). La commande magique pour obtenir la liste des listings :

\listoflistings

 

Ce qui donne :

Horreur et damnation, c'est en anglais, babel nous a trahis !

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) :

\usepackage[newfloat]{minted}
\SetupFloatingEnvironment{listing}{listname=Liste des Codes}%

Et après compilation, on obtient :

Ouf, nous voilà sauvés :)

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 :

\SetupFloatingEnvironment{listing}{name=Code}

Et on obtient après compilation :

Et voilà, on a customisé le nom de l'environnement !

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 ^^) :

\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 :

Vous voyez à quel point c'est trop cool LaTeX ?

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 :) :

\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 :

Une jolie somme ! \o/

 

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 :

\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 :

\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 :

Et un premier algo tout beau tout propre

On peut faire des choses plus complexes comme celle-ci :

\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{
dans les autres cas on fait ça \tcc*[r]{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 :

Un bel algorithme avec tout plein de keywords

 

Bon bah je pense que c'est tout pour cette fois, on se retrouve bientôt !

 

Un grand merci à mes relecteur.rice.s : MaxNisaea, et Pau Ssrls !



Pour continuer la lecture :


Commentaires

4 réponses à “LaTeX : la mise en forme du texte et des paragraphes”

  1. Avatar de Nibuald

    Petite ques­tion : Com­ment faites vous pour rendre latex inter-opé­rable avec les autres outils ? Je m'explique : vous écri­vez un article, une thèse, un mémoire, … et vous vou­driez le faire cor­ri­ger. Quels moyens pour ajou­ter des com­men­taires et des révi­sions à l'instar d'un Micro­soft Word ou Google Docs ?

    1. Avatar de Yoann M.

      Per­son­nel­le­ment je com­mente sur le pdf et c'est tout aus­si effi­cace.

    2. Dans ces cas là, une pla­te­forme cen­tra­li­sée semble tout indi­quée (sha­re­la­tex, over­leaf,…),
      si les relec­teurs ne prennent pas peur en voyant du latex.

      Une manière un poil plus com­pli­quée que l'annotation de pdf pro­po­sée par Yoann : sépa­rer le conte­nu tex­tuel du reste (struc­ture prin­ci­pale et pré­am­bule) en les met­tant dans des .tex sépa­rés, et en les impor­tant avec \input{}.

      Main­te­nant, seuls les fichiers conte­nant du texte peuvent être envoyés aux relec­teurs qui ne connaissent pas latex, vu qu'ils ne contiennent que des com­mandes ou du bali­sage léger qui se com­prend vite.

      L'avantage prin­ci­pal est de gar­der la com­plexi­té pour ceux qui veulent (en pas­sant par un docu­ment col­la­bo­ra­tif cen­tra­li­sé comme sha­re­la­tex), et de per­mettre à ceux qui ne veulent pas de pas­ser par un autre moyen (comme google doc ou une ins­tance ether­pad par exemple) pour édi­ter du texte.

      Après, le meilleur sys­tème pour le relec­teur (impri­mer et anno­ter à la main, pour ma part)
      n'est pas sou­vent le meilleur pour l'auteur (avoir un diff entre le fichier ini­tial et le fichier relu).

      1. Avatar de Nibuald

        Mer­ci lucas pour ta réponse. Je ne connais­sais pas les pla­te­formes cen­tra­li­sées.

Laisser un commentaire