Georges Abitbol s'invite dans vos documents LaTeX !

Si, comme moi, vous êtes pointilleux(se) sur l'apparence de vos documents, car, entre autres, vous avez toujours compté sur la poudre aux yeux pour donner du poids à vos travaux, alors vous apprécierez peut-être ce qui suit. Lors du dernier mois, j'ai essayé de vivre avec quelques logiciels de traitement de texte pour savoir quelle était la manière la plus flexible (le prix n'entre pas en ligne de compte) et la plus simple pour éditer des documents tout en conservant un style personnel. Allons droit au but : c'est dans les descendants de TeX que j'ai trouvé mon bonheur. J'ai même réussi à capturer ce dernier dans une classe de document que vous pourrez adapter et réutiliser pour vos propres travaux sans aucun effort.

Un aperçu des logiciels de traitement de texte

Pour commencer, voici le résultat de ma petit enquête. Je ne prétendrai pas être exhaustif dans ce billet, mais je vais juste rapporter les choses que j'ai remarquées. J'ai testé :
  • le trivial Microsoft Word 2008 qui m'a étonné par son apparence très similaire aux programmes Mac. Ce logiciel aurait pu être agréable s'il n'avait pas été vraiment lourdingue, même sur une machine puissante. Ce n'est pas ce que je recherche dans un logiciel qui me sert juste à produire des documents. Ceci dit, il possède pas mal de fonctionnalités intéressantes pour la mise en page (un peu comme son pire ennemi de chez Apple).
  • le foudroyant Nisus Writer, dont la rapidité n'a pas été égalée parmi les programmes WYSIWYG sous Mac pour un tel foisonnement de fonctionnalités. La gestion des styles est très bien faite mais les possibilités de gestion des images sont limitées. Nisus Writer est très adapté pour de gros documents où le style est secondaire. De plus, il possède la fonctionnalité LinkBack (en même temps ça doit être eux qui l'ont inventée), ce qui est assurément un plus pour la cohabitation entre le logiciel de traitement de texte et d'autres logiciels, par exemple un truc pour faire des schémas comme l'excellent OmniGraffle.
  • le sublime Pages d'Apple, qui recèle de fonctionnalités intéressantes et qui est parfait pour qui aime bien s'attarder sur l'apparence de son document, avec sa conception hybride mi-traitement de texte, mi-PAO. Je n'en dirai pas plus, il est super cool.
  • le vieux OpenOffice.org Writer qui, malgré les nouvelles améliorations apportées par les nouvelles version, ne gère que très mal les images venant de l'extérieur et sa gestion des styles d'objet est pitoyable. De manière générale, en plus d'être lent sur toutes les plateformes, c'est une plaie à utiliser. Cependant c'est ce que je conseillerais pour des gens qui ne veulent pas se prendre la tête et rester avec un logiciel qui fait son boulot et qui, ce qui n'est pas négligeable, est libre. C'est ce qui se fait de mieux sur Linux et probablement sur Windows (avec Koffice).
J'ai bien sûr éclipsé les Abiword, Bean et tout, qui n'ont pas été présentés ici parce qu'ils sont moins connus, mais qui sont de très bons programmes. Un autre programme que j'ai éclipsé de la liste est un outil très vieux nommé TeX qui est l'équivalent d'un langage de programmation pour la conception de documents. Je l'ai utilisé plusieurs fois pour divers travaux (la première fois remonte à mon rapport de stage en 4e) mais je n'avais jamais considéré de l'employer pour faire des choses tape-à-l'œil. Certes, la présentation par défaut est déjà assez classe, mais quand vous lisez toutes les semaines des documents de sources différentes produits par LaTeX, dont la moitié apparaissent flous sur mon lecteur de PDF, vous en avez un peu marre de la famille Computer Modern. Quels sont donc les avantages à utiliser LaTeX au lieu de Pages, par exemple, pour produire des documents jolis tels que cette annexe de rapport de projet universitaire ?

Utilisation des styles

Qu'est-ce que c'est un style ?

Un point non négligeable de l'édition de documents de plusieurs pages est l'utilisation des styles, qui permettent d'appliquer des propriétés prédéfinies sur des éléments du texte. Dans les traitements de texte classiques, ainsi que dans LaTeX, au vu de son fonctionnement, les choses qui s'apparentent à des styles sont des jeux de propriétés (ou des bêtes commandes, pour LaTeX) qui ne renferment aucune donnée sémantique (comme en HTML par exemple où les titres h1, h2 et j'vais pas les faire tous ont une signification pour la structure du document), mais qui régissent la présentation. Evidemment, le fait qu'il puisse y avoir des marqueurs ou des numérotations permet d'indiquer au logiciel de traitement de texte quels éléments rajouter à la table des matières, mais cela n'a jamais fait figure de sens : les styles n'ont de sens que pour vous, et en WYSIWYG, difficile . Soit ! Mon rêve d'un traitement du texte basé sur HTML et un CSS adapté au papier attendra encore, mais que prendre comme substitut ?

Là où LaTeX gagne : le fond et la forme

Les personnes initiées au traitement de documents savent qu'il est nécessaire, comme dans le web, de séparer le contenu et la présentation, pour que l'écriture soit plus efficace (pas besoin de s'attarder sur les détails de la présentation) et la présentation plus flexible (on peut changer plus tard la façon dont les titres sont présentés, et un changement sur le style modifie automatiquement tous les titres). Je vous conseille dès maintenant de continuer la lecture de cet article en écoutant l'album de Fabe intitulé Le fond et la forme, histoire de vous mettre dans le bain. La séparation du fond et de la forme est facile, même dans un traitement de texte classique : il suffit de définir des styles dans son document (par exemple, un style de caractère pour signifier une accentuation, qui sera matérialisée par la mise en italique des caractères), et de les appliquer où ça a du sens. Sauf que l'utilisation des styles est tout bonnement limitée par les capacités du logiciel à gérer les styles. Et sur ce point, il n'y en a pas un pour rattraper l'autre ! Tant qu'on reste dans les styles appliqués sur un texte (c'est-à-dire 80% de l'utilisation de styles mais bien souvent la seule possible dans un logiciel WYSIWYG), le principal est là, mais le "superflu" (pourtant nécessaire pour avoir un style farfelu), repassez plus tard. Il n'est, en général, pas possible d'appliquer absolument tout ce que vous mettez sur un texte dans un style, car quelques fonctionnalités n'ont pas été pensées comme des attributs de style. Pourtant ces fonctionnalités sont uniquement des éléments de présentation. Je pense à la manière de rajouter des numérotations aux titres avec Pages, par exemple, mais vous trouverez bien vous-même un jour les limites de votre traitement de texte. Et pour les styles sur une figure, un cadre de texte, une image, un objet quelconque, n'y pensez même pas. Pages, à ce niveau, permet uniquement de mémoriser le style comme style par défaut, ce qui est souvent très peu pratique car toutes les figures ou cadres de texte n'ont pas la même signification. Quel pain dans le cul (pardonnez-moi cette mauvaise traduction tellement marrante) de ne faire ne serait-ce qu'un cadre autour d'un paragraphe de texte ! Pour faire ce que vous avez envie de faire, il vous faut alors entraver la règle magique de séparation du fond et de la forme, et vous récoltez d'un coup tous les inconvénients de ne pas utiliser cette règle, et vous perdez des journées entières de travail. Voilà où nous mène le WYSIWYG, actuellement. Notons que ce n'est pas un défaut inhérent au WYSIWYG, mais à l'ensemble des logiciels de traitement de texte WYSIWYG. Développeurs du monde entier, voici un challenge à relever ! Bref, me voilà bien emmerdé, à pointer du doigt une limite des traitements de texte qui ne sont, de plus, pas vraiment faits pour ça (quoique rien ne l'empêcherait). Surtout que si vous avez un peu l'esprit critique, vous vous direz que la présentation avancée rentre plutôt dans le domaine de la PAO et que pour faire un document super stylé, il faut faire ça en deux étapes : d'abord écrire son texte avec des styles, puis ensuite le mettre en page avec toutes les fioritures. Mais moi je suis comme ça, je veux le beurre et l'argent de la crémière. Et je crois que j'ai trouvé comment l'avoir. C'est un peu technique, mais ça marche. Et en plus, c'est libre !

Le vrai article commence ici

Désolé d'avoir étalé quelques lignes de réflexions insensées avant de commencer, mais j'aime bien expliquer ce qui fait que j'en suis arrivé là. Nous allons donc avoir besoin des choses suivantes :
  • une distribution LaTeX installée, qui normalement contient tout ce qu'il faut, même XeLaTeX et TikZ. Il y a MiKTeX pour Windows, Texlive pour Linux et MacTeX pour Mac
  • XeLaTeX et les packages courants (fontspec surtout)
  • PGF et son ami TikZ
  • une connaissance de base de LaTeX, parce que j'vais pas m'amuser à réexpliquer tout depuis le début, il existe énormément de documents dans toutes les langues du monde qui expliquent très bien comment produire des documents avec LaTeX
Une fois que tout ça est installé, alors faisons un peu de théorie.

Une arme à double tranchant

Si LaTeX permet à l'utilisateur de réaliser son rêve de ne s'occuper que d'écrire sans se soucier de la mise en forme que le logiciel optimise tout seul comme un grand, il n'y a aucun garde-fou (tant mieux) pour remettre l'utilisateur dans le droit chemin. C'est comme ça avec UNIX en général et c'est à l'utilisateur de maîtriser et de se rendre compte de son utilisation du système. Je dis ça parce que je vois souvent des gens qui, mécontents de la présentation que fait LaTeX, vont se mettre, trop peu souvent après avoir écrit leur texte mais plutôt en plein pendant qu'ils écrivent, à fignoler des détails comme le placement de flottants ou de tels ou tels détails qui ne leur plaisent pas. Ceci aboutit à du code tristement moche, à des redéfinitions hasardeuses, et au même genre de pain dans l'cul que les utilisateurs de traitement de texte WYSIWYG : on perd l'avantage de la séparation. C'est une situation que vous avez déjà sûrement vécue, et que moi-même j'ai vécue, et qui soulève une vérité fondamentale : il faut savoir ce qu'on veut ! Ainsi, pour bien faire et éviter le plus possible de perdre du temps à l'avenir, au lieu de bidouiller sans arrêt, lisez la doc des packages et regroupez tout dans des packages ou des classes de document ! Faites en sorte que toute modification de la présentation qui peut être amenée à se répéter soit enregistrée où il faut.

Exemple flagrant

Si ça vous paraît flou, voici un exemple flagrant. Le mec, il veut que tous ses titres ils soient en italique. Il n'a pas le temps de lire un peu de doc. Alors il fait quoi, le mec ? Il fait ça :
\section{\textit{Une section}}
Bien, mais après, il voit que ça apparaît en italique dans la table des matières, alors il décide de s'y prendre autrement en écrivant manuellement le titre puis en l'ajoutant manuellement à la table des matières (il lit un peu de doc) :
{\Large\textit{Une section}}
\addcontentsline{toc}{section}{Une section}
Le mec il est content, ça marche, mais c'est un peu long d'y penser à chaque fois, de marquer deux fois le titre et surtout c'est illisible, même en aérant. Ce n'est pas concis ! Il se dit donc qu'il va faire une commande, et après avoir lu pas mal de doc il pond ceci dans le préambule :
\newcommand{\masection}[1]{
 {\Large\textit{#1}}
 \addcontentsline{toc}{section}{#1}
}
Il peut donc faire des sections en faisant uniquement :
\masection{Une section}
Et il se dit qu'il retrouve tous les avantages de la séparation du fond et de la forme. Un peu plus tard, il décide d'employer le package hyperref qui permet de faire des liens dans un PDF, ou il décide de faire des références à ses sections dans son texte. Et là il se rend compte que vu que ses sections personnalisées ne sont pas des vraies sections, il ne pourra pas utiliser ces fonctionnalités à moins de passer des heures sur la doc pour rendre sa section compatible avec ces packages. Et là il s'exclame : "Ah putain, c'est de la merde LaTeX, je vais de ce pas retrouver mon Word chéri". Vous voyez un peu ce que vous avez fait ?

Et pourtant, ça commence par un P

Et pourtant, la solution était si simple. Il suffisait de chercher un peu pour voir que le package titlesec permettait de personnaliser les titres, et que deux lignes permettaient d'obtenir une solution très propre et qui reste compatible avec tous les packages :
\usepackage{titlesec}
\titleformat*{\section}{\itshape}
Vous me direz, il faut y penser. Et moi je vous dis, retenez bien ce que je vais vous dire, j'vous dis !

"Patron, patron !"

Respectez le plus possible la séparation fond/forme et modifiez les commandes éprouvées par 25 ans de tradition au lieu de réinventer la roue. Evidemment, les commandes \section ou \chapter ne sont pas des commandes prédéfinies de LaTeX mais des commandes des classes de document les plus utilisées, comme article ou report. Le fait est qu'au fil du temps les utilisateurs ont sorti des packages permettant de rajouter des fonctionnalités sur les objets LaTeX les plus connus. Il serait bête de ne pas en profiter, non ?

"Quoi, vous voulez me dire que Georges Abitbol vient de sortir de mon bureau ?"

Nous allons maintenant mettre en application ces principes pour essayer de s'approcher un peu plus de la classe américaine tout en gardant tous les avantages de LaTeX. La première chose à considérer est le fait suivant : LaTeX et les polices, c'est pas le couple de l'année. En effet, si les polices fournies avec la plupart des distributions LaTeX pètent déjà la classe et sont super complètes et très équilibrées, il est très difficile d'y rajouter d'autres polices pour rompre la monotonie (ou se servir de LaTeX comme un logiciel de PAO). Ceci vient du fait que LaTeX utilise un système assez vieux (mais qui marche très bien) pour gérer ses polices, et que personne n'a trouvé nécessaire de l'adapter au goût du jour et aux nouvelles technologies comme OpenType. Heureusement, il existe un logiciel qui a changé la donne. Il s'appelle XeTeX et permet d'accéder au monde merveilleux de l'Unicode et des polices OpenType. Nous allons l'utiliser sans modération car il permet des choses magnifiques. Pour compiler son document avec XeTeX tout en restant compatible avec LaTeX, il est nécessaire d'utiliser la commande suivante :
xelatex document.tex
Cette commande produira un fichier PDF. Voilà pour les bases !

"Non, patron, ça on s'en fout ! Georges Abitbol est vivant !"

La deuxième chose à considérer, c'est que TeX est un système qui mange des commandes et qui chie des pages, en gros. Ainsi, à part la composition de texte, des gens utilisent TeX pour écrire des partitions, des images vectorielles ou des schémas. On peut même combiner tout ça dans un seul document. De multiples packages existent pour apporter ce genre de fonctionnalités (ici on s'intéressera aux images vectorielles), mais nous allons nous attarder sur PGF et TikZ. Exactement comme TeX et LaTeX, PGF est le langage de bas niveau et TikZ un jeu de fonctionnalités permettant d'utiliser facilement le premier. Ce couple permet de produire des images vectorielles de haute qualité, en jouant avec des nodes qui permettent de créer des formes courantes comme des rectangles, des cercles, des lignes, qui peuvent contenir du texte, par exemple. Le style des nodes est modifiables, ont peut spécifier la position d'un node par rapport aux autres, bref la vie est belle. Je ne me suis pas vraiment beaucoup attardé sur TikZ, en vérité, et j'ai juste écrit les images nécessaires à la création de documents abitbolesques un peu comme un cochon, je l'avoue. A vous de faire mieux !

Création d'une classe de document classe

Nous allons démarrer comme je l'ai fait. Créez un répertoire et deux fichiers : un fichier .tex qui sera votre document de test et un fichier .cls qui sera votre classe de document. Nous nous concentrerons sur la création d'une classe de document basée sur scrreprt, qui est une classe de document pour les rapports et les mémoires appartenant au paquet KOMA-Script. Pourquoi cette classe précisément ? Un article de Bébert (dont les fiches sont excellentes) résume bien ce choix.

Le document d'exemple

Nous allons ainsi créer un document d'exemple nommé document.tex pour voir comment les modifications de notre classe de document se répercutent sur le document-cobaye. J'utilise le package lipsum qui permet de générer des Lorem Ipsum à tout va. Notez que je ne teste pas tout, ici, par exemple il n'y a pas de partie ni de sous-sous-sous-section. A vous d'adapter ça à vos besoin, car les éléments qui n'ont pas été testés s'afficheront avec leur apparence habituelle.
\documentclass{exemple}
\usepackage{lipsum}

\title{Un titre}
\author{join}

\begin{document}
\maketitle
\tableofcontents
\chapter*{Introduction}
\lipsum[2]
\chapter{Monde de merde}
Prenons un \textbf{verre} avec $\sum^n_{i=0}=x^3$ et
\texttt{\textbf{int} fork()} et tout. \lipsum[1]
\section{On va manger des chips}
 \lipsum[2]
\subsection{Je ne suis pas gentil !}
 \lipsum[5]
\subsection{Quand je me mets en colère}
 \lipsum[1]
\subsection{Je suis méconnaissable}
 \lipsum[2]
\section{C'est tout ce que ça te fait quand je te dis qu'on
va manger des chips ?}
\subsection{Y'a Peter qui fait du boucan dans les water}
 \lipsum[5]
\subsection{Ça y est, je suis guéri}
 \lipsum[1]
\subsection{Par contre on ne peut plus rentrer dans les chiottes,
y'en a par-tout}
\subsubsection{Ça doit être les burgers...}
 \lipsum[2]
\subsubsection{Bruit d'ascenseur}
 \lipsum[1]
\chapter{Ça te dirait de te bâfrer un bon chili con carne ?}
\section{A la fromagerie en bas de chez moi, ils vendaient trois
choses}
 \lipsum[3]
\subsection{Du fromage}
 \lipsum[1]
\subsection{Des ouiches lorraines}
 \lipsum[1]
\subsection{Et de la bouffe chinoise}
 \lipsum[4]
\end{document}
Cela devrait suffire.

La classe de document

Reportez-vous aux documentations pour savoir ce qu'il faut savoir sur la création d'une classe de document. Dans les prochaines sections j'expliquerai juste certaines choses. La classe de document doit s'appeler exemple.cls, si vous voulez que ça marche avec le document.tex d'au-dessus. Pour lui donner un autre nom, changez la commande \documentclass dans le document et \ProvidesClass dans la classe ci-dessous. Voici une classe de document minimale avec ce qu'on veut :
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{exemple}
\LoadClass[a4paper,11pt]{scrreprt}
\RequirePackage[francais]{babel}
\RequirePackage[explicit]{titlesec}
\RequirePackage{fancyhdr,setspace,titletoc}
\RequirePackage{tikz, float, caption}
\usetikzlibrary{shapes}
\RequirePackage{fontspec,xltxtra,xunicode}
A ce niveau, la classe de document ne fait rien du tout. Et c'est normal ! Remarquez qu'on utilise RequirePackage et non pas usepackage, et LoadClass au lieu de documentclass. On charge donc les paquets suivants :
  • babel pour la gestion des règles typographiques françaises que l'on va pourrir peu à peu (mouahaha)
  • titlesec pour la modification du format des titres, avec l'option explicit pour décider quand nous incluons nous-mêmes le texte du titre
  • fancyhdr pour personnaliser les en-têtes et pieds de pages
  • setspace pour pouvoir utiliser des valeurs d'interligne complètement so special
  • titletoc est le penchant démoniaque de titlesec, il sert à personnaliser la table des matières
  • tikz vous connaissez, maintenant (on prend la librairie shapes pour avoir des formes excentriques comme star)
  • float et caption pour gérer les flottants
  • fontspec pour la gestion des polices TrueType et OpenType de votre système
  • xlxtra et xunicode pour la gestion de l'Unicode et de tous ces petits caractères tellement dingues
Ensuite, vous lisez les docs, mélangez ce qui vous intéresse et vous avez votre classe classe.

Quelques petits conseils

Gestion des polices

Vous aurez sûrement la gentillesse de partager vos classes classes avec vos ami(e)s, qui n'auront peut-être pas toutes vos polices et qui n'auront peut-être pas envie de se plonger dans le code infernal de votre classe. Voilà la solution que je propose pour gérer des jeux de polices qui passeront partout :
% Ensemble de polices courantes sous Linux et pas trop moches
\newcommand{\fontslinux}{
 \setmainfont{Liberation Serif}
 \setsansfont{Liberation Sans}
 \setmonofont{Liberation Mono}
 \newfontfamily{\hwfont}{Comic Sans MS}
 \newfontfamily{\fatfont}{Arial Black}
 \newfontfamily{\authorfont}{Liberation Serif}
}
% Ensemble de polices installées sur Mac OS X
\newcommand{\fontsmac}{
 \setmainfont[BoldFont={Optima Bold}]{Optima}
 \setsansfont[BoldFont={Kozuka Gothic Pro B}]{Kozuka Gothic Pro M}
 \setmonofont[BoldFont={Courier Bold}]{Courier}
 \newfontfamily{\hwfont}{Marker Felt}
 \newfontfamily{\fatfont}{Kozuka Gothic Pro H}
 \newfontfamily{\authorfont}{Zapfino}
}
% Uniquement des polices de LaTeX, pas de pignolette de fontspec
\newcommand{\fontslatex}{
 \newcommand{\hwfont}{\sffamily}
 \newcommand{\fatfont}{\bfseries\sffamily}
 \newcommand{\authorfont}{}
}
% Ensemble de polices so Windows des 90's (c'est moche)
\newcommand{\fontswindows}{
 \setmainfont{Times New Roman}
 \setsansfont{Arial}
 \setmonofont{Courier New}
 \newfontfamily{\hwfont}{Comic Sans MS}
 \newfontfamily{\fatfont}{Arial Black}
 \newfontfamily{\authorfont}{Times New Roman}
}
% Ensemble de polices professionnelles
\newcommand{\fontsclasses}{
 \setmainfont{Optima LT Std}
 \setsansfont{Myriad Pro}
 \setmonofont[BoldFont={ITC American Typewriter Std Bold}]
    {ITC American Typewriter Std Medium}
 \newfontfamily{\hwfont}{Marker Felt Thin}
 \newfontfamily{\fatfont}{Myriad Pro Black}
 \newfontfamily{\authorfont}{Trajan Pro Bold}
}

% Voici le choix par défaut
\fontslatex

% On traite les options pour mettre le choix de police par défaut
\DeclareOption{fontsclasses}{\fontsclasses}
\DeclareOption{fontswindows}{\fontswindows}
\DeclareOption{fontslinux}{\fontslinux}
\DeclareOption{fontsmac}{\fontsmac}
\ProcessOptions
Ceci permet d'appeler la classe de document avec une option parmi (fontsclasses, fontswindows, fontslinux, fontsmac) pour pouvoir avoir automatiquement les polices désirées. Un exemple :
\documentclass[fontsclasses]{exemple}
Et voilà.

Faire des boîtes web 2.0 avec TikZ

Pour ma classe trop classe, j'ai mis au point la commande suivante pour faire une boîte trop classe :
\newcommand{\emboiter}[3][4pt]{%
\begin{tikzpicture}[baseline=-0.1cm]
 \node[rectangle,draw=#2,fill,top color=#2!30, bottom color=#2!90,
rounded corners=#1] {{#3}};
\end{tikzpicture}%
}
Il y a deux arguments obligatoires, et un argument optionnel. Voici des exemples :
% Affiche un texte cool avec texte surligné en vert 2.0
un \emboiter{green}{texte} cool
% Affiche pareil avec des coins pointus
un \emboiter[0pt]{green}{texte} cool
% Affiche pareil en étoile, grâce à une propriété TikZ
un \emboiter[0pt,star]{green}{texte} cool
Vous pouvez donc utiliser cette fonction pour redéfinir des trucs (l'utiliser directement dans le texte contreviendrait un peu à notre règle).

Changer le style des notes de bas de page

Allez, pour celui-là j'en a bavé, parce que l'usage de babel fait que \@makefntext est changé au début du document et donc qu'il faut plutôt redéfinir la commande \@makefntextFB :
\makeatletter
% Numéro apparu dans le texte
\renewcommand{\@makefnmark}{%
 \begin{tikzpicture}[baseline=-6pt]\node[rectangle, rounded
corners=4pt, fill, color=gray, inner sep=1.5pt, text=white]
{\sffamily\bfseries\scriptsize{\@thefnmark}};\end{tikzpicture}
}
% Texte en bas de la page
\renewcommand\@makefntextFB[1]{%
 \parindent 1em%
 \begin{tikzpicture}[baseline=-0.1cm]\node[rectangle, rounded
corners=4pt, fill, color=gray, inner sep=1.5pt, text=white]
{\sffamily\bfseries\small{\@thefnmark}};
\end{tikzpicture}~\textcolor{gray}{#1}}
\makeatother

Style moderne de sous-sous-section

Voilà comment emboîter deux images vectorielles pour donner un style super style à vos sous-sous-sections :
\titleformat{\subsubsection}[hang]%
 {\sffamily\bfseries\large}%
 {}%
 {10pt}{\emboiter[8.5pt,top color=lightgray, bottom
color=lightgray]{lightgray}{
 \begin{tikzpicture}[overlay,baseline=-0.14cm]
 \node[circle, inner sep=3pt, draw=gray, fill, color=gray,
text=white]{\bfseries\thesubsubsection};
 \end{tikzpicture}\quad\thinspace #1
 }}{}
On utilise donc \emboiter mais dans le sens "mettre dans une boîte", hein.

Pour les fainéants

Vous voulez plutôt un truc tout fait ? Vous n'avez pas le temps de vous plonger dans le code et voulez profiter de l'expérience de Georges Abitbol en direct live ? Alors suivez le guide.

Téléchargement

Pour télécharger ma super classe de document joinreport, cliquez ici et sauvegardez cette classe à l'endroit où sera votre document qui va l'utiliser.

Configuration

Dans votre document, changez la classe de document par :
\documentclass[fontsclasses]{joinreport}
Remplacez fontsclasses par :
  • fontsclasses si vous avez les polices Optima LT Std, Myriad Pro, Marker Felt, ITC American Typewriter Std et Trajan Pro
  • fontsmac si vous avez un Mac ou les polices Optima, Kozuka Gothic Pro, Courier, Marker Felt, Zapfino (présentes sur tous les Mac depuis un bout de temps)
  • fontswindows si vous n'avez que des polices Windows (à partir de 95, voire de 3.11) et/ou que vous voulez vraiment un truc hideux
  • fontslinux si vous souhaitez utiliser un bon pourcentage de polices libres ou que vous avez les polices Liberation, Comic Sans MS et Arial Black (présentes sur pas mal de systèmes Linux récents)
Oubliez l'argument si vous voulez n'utiliser que les polices de LaTeX.

Ecriture

Ecrivez votre document avec les commandes standard, comme d'habitude. N'oubliez pas de compiler avec xelatex, et pas avec latex, pdflatex ou xetex ! Vous pouvez utiliser la commande \emboiter décrite plus haut pour surligner un élément. Vous pouvez également utiliser la commande \entetegraphique{dessin.pdf}{Ligne 1}{Ligne2}{Ligne3} pour rajouter un en-tête à votre page de garde. C'est à appeler au même endroit que \title ou \author et faites attention, ça remplace \date. Lorsque vous utilisez \author, faites attention à séparer les différents auteurs avec \and. Une fois votre page de titre configurée dans le préambule avec ces options, vous pouvez donc appeler \maketitle et hop, ça fait une page top classe. Vous pouvez écrire du texte avec un style manuscrit ou marrant (on dit script) en utilisant \texthw{texte}. Les éléments stylisés pour le moment sont donc :
  • en-tête, pied de page
  • table des matières
  • notes de bas de page
  • environnement description
  • flottants
  • titres (chapter, section, subsection, subsubsection)
  • texttt qui est surligné en jaune 2.0 (pour éviter de surligner, utilisez plutôt {\ttfamily{}le texte} ou supprimez la redéfinition dans le code de la classe de document)
  • page de garde

Un exemple

Vous pouvez voir une partie d'un compte-rendu TP que j'ai repris de vielles sources toutes collantes (attention si vous vous en servez pour apprendre, je ne garantis pas la véracité des informations) et non pas de la version finale non-collante (par collante je veux dire qui colle et qui pue). Pour essayer de recompiler ça, utilisez donc la source TeX et le logo de l'Université de Bourgogne. Bonne chance.

Conclusion

Vous voyez qu'avec ceci, au final, vous vous casserez moins le cul. Peut-on le prouver ? Oui, mais cette réduction du cassage de cul n'est valable que pour des grandes valeurs de n (approximativement n > 1).

Démonstration avec plein de fois le mot cul dedans

Soit A la quantité de cassage de cul occasionnée par l'écriture d'un document avec LaTeX sans porter attention à la mise en page. Soit B la quantité de cassage de cul occasionnée par la modification du style. On remarque que dans la plupart des cas, B tend à se rapprocher de A. Ainsi de manière générale, soit n le nombre de documents écrits, on définit S(n) la totalité du cassage de cul pour l'écriture de n documents LaTeX, et on a S(n)=n*(A+B). Soit C la quantité de cassage de cul occasionnée par l'écriture ou la récupération d'une classe de document classe, alors sauf dans des cas extrêmes, C n'excède pas 2B, et dans la plupart des cas C est inférieur à B (là je suppose que la plupart de mes peu nombreux lecteurs sont des fainéants). Alors dans le cas où une classe de document classe est utilisée, on a donc S(n)=C+n*A. Ainsi, dans la plupart des cas, pour n>1, on a : n*(A+B) > C+n*A. Au final, vous vous casserez donc moins le cul à faire une classe de document classe plutôt que d'éviter de le faire, si votre but est de produire des documents classe.

Corollaire super sympa

Ainsi, étant donné qu'en utilisant LyX (l'éditeur WYSIWYM pour LaTeX), vous vous cassez encore moins le cul pour écrire vos documents LaTeX en faisant fi de la mise en forme, alors imaginez la combinaison de LyX et d'une classe de document classe ! C'est le paradis ! Sauf que je n'ai pas eu encore le temps d'étudier la question de LyX, qui est assez simple pour l'écriture mais complexe lorsqu'il s'agit de changer une caractéristique comme l'ajout d'une classe. Deux problèmes majeurs m'empêchent d'utiliser LyX simplement pour le moment :
  • le fait que pour ajouter une classe il faut faire un layout, bon c'est pas trop chiant mais cela requiert quelques commandes
  • le fait que LyX n'utilise pas XeLaTeX par défaut, et qu'il faut donc soit rajouter un bouton et un convertisseur pour XeLaTeX, soit changer le comportement par défaut pour utiliser XeLaTeX au lieu de pdfLaTeX.
A suivre, donc, pour la réduction encore plus flagrante de cassage de cul, qui passerait de A à aucun cassage de cul !

Mon document ne paraît pas beau

J'ai remarqué cette chose : quand vous êtes sous evince le lecteur PDF de Gnome, le document apparaît avec des petits artefacts, comme des lignes où il ne faut pas. Cela est probablement dû à TikZ, mais je ne sais pas comment régler le problème. Un ou deux artefacts sont déjà apparus avec Aperçu sous Mac. Leur point commun est que quand vous zoomez suffisamment, tous les artefacts disparaissent. J'imagine également qu'à l'impression ça disparaît. La lecture des documents produits est bonne sur epdfview, Aperçu, Adobe Reader (pas testé mais j'imagine que c'est bon) et xpdf. Aidez-moi à agrandir la liste !

Parenthèse historique

Cet article fait de nombreuses références à Georges Abitbol, l'homme le plus classe du monde, dont vous trouverez une biographie exhaustive dans le film Le Grand Détournement : la classe américaine que je vous conseille de regarder.

5 commentaire(s)

Oct 24, 2011
Alexandre said...
C'est FORMIDABLE
Oct 24, 2011
Note que mon ami Hubert Sainte-Force travaille activement sur une version bien plus classe encore. Je t'invite à prendre connaissance de son travail :
http://steforce.oin.name/read/abitbolreport_latex
Oct 24, 2011
Alexandre said...
Vous êtes CLASSES avec vos classes, les gars
Puis-je t'appeler par téléphone? Je suis novice avec LaTex et j'ai un problème dans LyX+XeTeX+figure = ça compile pas
Oct 24, 2011
Pas de téléphone à portée, mais tu peux m'envoyer un mail (indice : bouton CONTACT en haut) avec tes coordonnées de messagerie instantanée.
Oct 24, 2011
Alexandre said...
OK

Vous pouvez réagir à cette page ou à une réaction à cette page ici.

oin? oin.

29180 oins since near 2010.

dubtrip

Fathaya Sound Syndicate

c.oin.name (en construction)

Chez Olivier El Mekki

Mon profil sur Posterous

oin, a join creation icons by fixicon — background by crazy-alice — powered by posterous

Ce site personnel est un fourre-tout qui peut servir de journal personnel, de répertoire de musique, de portfolio, de carnet de notes, de recueil de pensées diverses sur des sujets variés. Les auteurs dévoilent une partie de leur personne et de leurs recherches, afin qu’en retour ils puissent y trouver l’avis d’autres personnes. Les informations que vous trouverez ici sont données sans aucune garantie. Par ailleurs, ouvrir ce site annule la garantie. La musique qui se trouve sur ce site (et non pas celle qui est liée) est sous licence Creative Commons Music Sharing. L’administrateur du site se réserve le droit de vilipender quiconque sur ses terres et de retirer toute participation extérieure qui lui ferait perdre patience.