Didacticiel :
Dessiner des molécules avec LaTeX

Vous avez surement déjà entendu un barbu vous dire "Tu vas voir LaTeX c'est génial, tu peux même dessiner des molécules avec !". Et du coup vous vous êtes dit que c'est vrai que ça a l'air bien vu qu'on peut même dessiner des molécules avec !

Et effectivement, on peut ! La molécule suivante a été faite avec LaTeX (le premier qui trouve ce que c'est, gagne… le droit de nous écrire un article sur le sujet de son choix).

Molécule dessinée grâce à LaTeX (CC BY Julien Fumey)

Et puis vous avez voulu passer à la pratique et dessiner votre molécule. Et là c'est le drame ! Vous avez cherché sur votre moteur de recherche préféré quel package utiliser et surtout comment l'utiliser. Sauf que vous avez dû trouver beaucoup de packages différents.

C'est un peu ce qui m'est arrivé l'autre jour lorsque, en rédigeant ma thèse, j'ai voulu dessiner la structure chimique d'un acide aminé. Alors vous allez me dire que je suis vraiment complètement con, vu qu'il y a des milliers d'images représentant ces structures sur internet qu'une simple requête sur Google Images (ou sur DuckDuckGo pour les puristes) m'aurait permis de trouver. Il ne m'aurait plus resté qu'à insérer l'image dans ma thèse et le tour était joué. Ce n'est pas totalement faux (c'est même totalement vrai, en fait), mais cela vous aurait privé de ce magnifique tutoriel !

Maintenant que j'ai raconté ma vie, passons au plus intéressant (non pas que ma vie ne soit pas intéressante, mais ce n'est le sujet ici), à savoir la partie LaTeX.

Alors je vous ai dit plus haut qu'il existait de nombreux packages permettant de dessiner des molécules. Du coup vous vous êtes surement demandé lequel choisir ? Pour que ce soit plus simple, je vais choisir pour vous, et j'ai choisi d'utiliser le package chemfig qui est très très très complet et qui a une doc très bien écrite et très complète (et disponible en français pour les allergiques à la langue de Shakespeare).

Pour utiliser Chemfig, il suffit de l'importer dans votre document LaTeX avec la commande  \usepackage{chemfig}. C'est normalement suffisant.

Une molécule simple

Pour commencer, nous allons dessiner la molécule qui est au début de l'article une molécule simple.

La commande principale de Chemfig est \chemfig{<code>} . Jusque là rien de bien compliqué. Il va maintenant falloir remplir le <code> qui va décrire la molécule que vous souhaitez représenter. Et c'est là que ça commence à être un peu moins drôle, en tout cas pour des molécules un peu complexes.

La molécule la plus simple est une liaison entre deux atomes. Pour faire cela, on utilisera le code \chemfig{A-A} , ce qui donne la molécule qui suit.

Capture d’écran 2015-07-29 à 21.47.50

Simple, non ?

Si entre les deux atomes, vous n'avez pas une liaison simple mais une liaison double, il suffit de remplacer le "-" par "=" dans le code, et par "~" pour une liaison triple. On peut même opter pour une représentation de Cram et choisir des liaisons à l'avant ou l'arrière du plan.

Par exemple \chemfig{A-B=C~D<E:>F>|G}  donne la molécule suivante :

Capture d’écran 2015-07-29 à 21.55.24

Des molécules plus complexes

Jusque là nous avons vu comment faire des molécules linéaires, mais on peut également faire des molécules plus complexes et non linéaires. Pour cela, nous allons avoir besoin de modifier l'angle des liaisons, grâce aux paramètres.

Les quoi ?!

Les paramètres. En fait pour chaque liaison, 5 paramètres sont définis. Jusque là, on ne l'avait pas fait, et les valeurs par défaut étaient utilisées. Les paramètres modifiables pour chaque liaison sont :

  • L'angle de la liaison
  • La taille de la liaison
  • Les atomes de départ et d'arrivée de la liaison (utile pour les groupes d'atomes)
  • Le "design" de la liaison

Pour changer les valeurs de ces paramètres, il suffit d'ajouter [angle, taille, atome_dep, atome_arr, design] .

Pour les angles, il y a 3 façons de faire. La première va être d'utiliser des angles prédéfinis, au nombre de 8 (tous les 45°). L'angle de base est à 0°. Il est à l'horizontal sur la droite du premier atome de la liaison. Il s'agit de l'angle 0. Les angles suivants sont séparés de 45° et sont ordonnés dans le sens inverse des aiguilles d'une montre. Ainsi l'angle 1 est à 45° au dessus de l'horizontale à droite. Un petit schéma vous aidera peut-être à mieux visualiser (notez bien que le schéma a été fait avec LaTeX et le package Chemfig en utilisant les variations possibles d'angles…) :

Capture d’écran 2015-08-02 à 15.10.22

 

Ainsi, le code \chemfig{A-B-[2]C}  donne la molécule :

Capture d’écran 2015-08-02 à 15.15.10

Et le code \chemfig{H-[1]O-[7]H}  nous permet de dessiner une belle molécule d'eau !

Capture d’écran 2015-08-02 à 15.25.24

 

La deuxième méthode pour définir les angles est de donner directement la valeur de l'angle (toujours par rapport à l'horizontale).

La dernière méthode est de donner une valeur d'angle relative par rapport à la liaison précédente.

Pour ces deux dernières méthodes, je vous renvois à la documentation du package.

 

En enchaînant les liaisons tout en faisant varier les angles, on peut également dessiner de beaux acides gras comme l'acide linoléique (qui est indispensable à la vie, alors bouffez de l'huile !) :

 

Le code utilisé pour dessiner l'acide linoléique est intéressant à plusieurs titres. Déjà vous constaterez que je n'ai dessiné quasiment que des liaisons sans mettre les atomes entre chaque liaison. Deuxièmement, j'ai modifié la taille des liaisons (le deuxième argument des options de liaison) pour que ce soit plus joli. Enfin, vous l'avez peut-être remarqué, il y a un bout de code entre parenthèse : (=[2,0.5]O) . Il s'agit d'une branche, et c'est ce qui va nous permettre de dessiner des molécules vraiment plus complexes.

Par exemple pour dessiner la lysine (vous savez, l'acide aminé), on pourra utiliser le code suivant :

Capture d’écran 2015-08-02 à 15.57.28

 

Cétipabo ?!

Ah tiens, puisqu'on parle d'acide aminé… Certains d'entre eux, comme la phénylalanine, comportent des cycles. Et il y a donc un moyen de représenter les cycles !

Pour dessiner un cycle, on va utiliser l'opérateur "*" suivi du nombre d'atomes composant la chaîne principale du cycle puis donner les liaisons à dessiner :

Capture d’écran 2015-08-02 à 16.08.10

Revenons à la phénylalanine :

Capture d’écran 2015-08-02 à 16.24.56

 

Quelques informations sur le code utilisé pour dessiner cet acide aminé. Comme vous avez pu le constater, je n'ai pas utilisé *6(-=-=-=) , mais **6([6,0.5]------)  pour dessiner le cycle. La double étoile permet de dessiner un cercle au centre du cycle. C'est pourquoi je n'ai mis ensuite que des liaisons simples dans le cycle. Ensuite j'ai défini l'angle et la taille du cycle avant même de définir les liaisons qu'il contient.

On peut aussi coller des cycles entre eux, ce qui sera utile notamment pour dessiner le tryptophane :

Capture d’écran 2015-08-02 à 16.36.48Comme vous pouvez le voir sur le code le deuxième cycle (celui en bas à droite) est inclus dans le premier. Et on peut faire beaucoup plus compliqué ! Il a fallut définir au niveau du groupement NH l'arrivée de la liaison précédente et le départ de la liaison suivante pour que la liaison soit bien sur le N et non sur le H.

 

Bon… On a déjà vu pas mal de choses, alors je vais m'arrêter là, mais on aurait pu en voir beaucoup d'autres. Chemfig permet par exemple d'ajouter des doublets (pour dessiner des formules de Lewis), d'ajouter des + et des - pour les ions, de dessiner des réactions chimiques, des déplacements d'électrons. Il existe aussi plein d'options de personnalisation pour ajouter de la couleur ou pour modifier le style des traits des liaisons. N'hésitez pas à consulter la documentation !

Ah et puisque le package permet de dessiner des liaisons, on peut aussi l'utiliser pour faire totalement autre chose que des molécules, comme par exemple des organigrammes, des arbres, etc.

Et pour que vous n'oubliez pas, tout ceux qui ont reconnu l'ATP sur la première figure de l'article pour envoyer votre article, contactez les admins ! 😉

Documentation de Chemfig

Merci aux relecteurs : Wocka, Clem_, Waqueteu et Akira.

  • À propos de
  • Issu du master de bioinformatique de l'université Paris Diderot, j'ai réalisé une thèse en génomique des populations chez le poisson aveugle Astyanax mexicanus. Ancien président (2014-2017) de l'association des Jeunes Bioinformaticiens de France (RSG France - JeBiF), je suis membre du conseil de la SFBI depuis juillet 2015. @julienfumey

Catégorie: Didacticiel | Tags: , , ,

Un commentaire sur “Dessiner des molécules avec LaTeX

  1. Bonjour,

    La molécule que vous avez représentée est de l\'ATP...

    Suis-je le premier à l\'avoir deviné ?

    Cordialement,

Laisser un commentaire