Accessibility Tools

- Le blog participatif de bioinformatique francophone depuis 2012 -

Dessiner des molécules avec LaTeX

Vous avez sur­ement déjà enten­du un bar­bu vous dire "Tu vas voir LaTeX c'est génial, tu peux même des­si­ner 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 des­si­ner des molé­cules avec !

Et effec­ti­ve­ment, on peut ! La molé­cule sui­vante a été faite avec LaTeX (le pre­mier qui trouve ce que c'est, gagne… le droit de nous écrire un article sur le sujet de son choix).

Molé­cule des­si­née grâce à LaTeX (CC BY Julien Fumey)

Et puis vous avez vou­lu pas­ser à la pra­tique et des­si­ner votre molé­cule. Et là c'est le drame ! Vous avez cher­ché sur votre moteur de recherche pré­fé­ré quel package uti­li­ser et sur­tout com­ment l'utiliser. Sauf que vous avez dû trou­ver beau­coup de packages dif­fé­rents.

C'est un peu ce qui m'est arri­vé l'autre jour lorsque, en rédi­geant ma thèse, j'ai vou­lu des­si­ner la struc­ture chi­mique d'un acide ami­né. Alors vous allez me dire que je suis vrai­ment com­plè­te­ment con, vu qu'il y a des mil­liers d'images repré­sen­tant ces struc­tures sur inter­net qu'une simple requête sur Google Images (ou sur Duck­Duck­Go pour les puristes) m'aurait per­mis de trou­ver. Il ne m'aurait plus res­té qu'à insé­rer l'image dans ma thèse et le tour était joué. Ce n'est pas tota­le­ment faux (c'est même tota­le­ment vrai, en fait), mais cela vous aurait pri­vé de ce magni­fique tuto­riel !

Main­te­nant que j'ai racon­té ma vie, pas­sons au plus inté­res­sant (non pas que ma vie ne soit pas inté­res­sante, mais ce n'est le sujet ici), à savoir la par­tie LaTeX.

Alors je vous ai dit plus haut qu'il exis­tait de nom­breux packages per­met­tant de des­si­ner des molé­cules. Du coup vous vous êtes sur­ement deman­dé lequel choi­sir ? Pour que ce soit plus simple, je vais choi­sir pour vous, et j'ai choi­si d'utiliser le package chem­fig qui est très très très com­plet et qui a une doc très bien écrite et très com­plète (et dis­po­nible en fran­çais pour les aller­giques à la langue de Sha­kes­peare).

Pour uti­li­ser Chem­fig, il suf­fit de l'importer dans votre docu­ment LaTeX avec la com­mande 

\use­pa­ckage{chem­fig}

. C'est nor­ma­le­ment suf­fi­sant.

Une molécule simple

Pour com­men­cer, nous allons des­si­ner la molé­cule qui est au début de l'article une molé­cule simple.

La com­mande prin­ci­pale de Chem­fig est

\chem­fig{<code>}

 . Jusque là rien de bien com­pli­qué. Il va main­te­nant fal­loir rem­plir le <code> qui va décrire la molé­cule que vous sou­hai­tez repré­sen­ter. Et c'est là que ça com­mence à être un peu moins drôle, en tout cas pour des molé­cules un peu com­plexes.

La molé­cule la plus simple est une liai­son entre deux atomes. Pour faire cela, on uti­li­se­ra le code

\chem­fig{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 liai­son simple mais une liai­son double, il suf­fit de rem­pla­cer le "-" par "=" dans le code, et par "~" pour une liai­son triple. On peut même opter pour une repré­sen­ta­tion de Cram et choi­sir des liai­sons à l'avant ou l'arrière du plan.

Par exemple

\chem­fig{A‑B=C~D<E :>F>|G}

  donne la molé­cule sui­vante :

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

Des molécules plus complexes

Jusque là nous avons vu com­ment faire des molé­cules linéaires, mais on peut éga­le­ment faire des molé­cules plus com­plexes et non linéaires. Pour cela, nous allons avoir besoin de modi­fier l'angle des liai­sons, grâce aux para­mètres.

Les quoi ?!

Les para­mètres. En fait pour chaque liai­son, 5 para­mètres sont défi­nis. Jusque là, on ne l'avait pas fait, et les valeurs par défaut étaient uti­li­sées. Les para­mètres modi­fiables pour chaque liai­son sont :

  • L'angle de la liai­son
  • La taille de la liai­son
  • Les atomes de départ et d'arrivée de la liai­son (utile pour les groupes d'atomes)
  • Le "desi­gn" de la liai­son

Pour chan­ger les valeurs de ces para­mètres, il suf­fit d'ajouter

[angle, taille, atome_​dep, atome_​arr, desi­gn]

 .

Pour les angles, il y a 3 façons de faire. La pre­mière va être d'utiliser des angles pré­dé­fi­nis, au nombre de 8 (tous les 45°). L'angle de base est à 0°. Il est à l'horizontal sur la droite du pre­mier atome de la liai­son. Il s'agit de l'angle 0. Les angles sui­vants sont sépa­rés de 45° et sont ordon­nés dans le sens inverse des aiguilles d'une montre. Ain­si l'angle 1 est à 45° au des­sus de l'horizontale à droite. Un petit sché­ma vous aide­ra peut-être à mieux visua­li­ser (notez bien que le sché­ma a été fait avec LaTeX et le package Chem­fig en uti­li­sant les varia­tions pos­sibles d'angles…) :

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

 

Ain­si, le code

\chem­fig{A‑B-[2]C}

  donne la molé­cule :

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

Et le code

\chem­fig{H-[1]O-[7]H}

  nous per­met de des­si­ner une belle molé­cule d'eau !

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

 

La deuxième méthode pour défi­nir les angles est de don­ner direc­te­ment la valeur de l'angle (tou­jours par rap­port à l'horizontale).

La der­nière méthode est de don­ner une valeur d'angle rela­tive par rap­port à la liai­son pré­cé­dente.

Pour ces deux der­nières méthodes, je vous ren­vois à la docu­men­ta­tion du package.

 

En enchaî­nant les liai­sons tout en fai­sant varier les angles, on peut éga­le­ment des­si­ner de beaux acides gras comme l'acide lino­léique (qui est indis­pen­sable à la vie, alors bouf­fez de l'huile !) :

 

Le code uti­li­sé pour des­si­ner l'acide lino­léique est inté­res­sant à plu­sieurs titres. Déjà vous consta­te­rez que je n'ai des­si­né qua­si­ment que des liai­sons sans mettre les atomes entre chaque liai­son. Deuxiè­me­ment, j'ai modi­fié la taille des liai­sons (le deuxième argu­ment des options de liai­son) pour que ce soit plus joli. Enfin, vous l'avez peut-être remar­qué, il y a un bout de code entre paren­thèse :

(=[2,0.5]O)

 . Il s'agit d'une branche, et c'est ce qui va nous per­mettre de des­si­ner des molé­cules vrai­ment plus com­plexes.

Par exemple pour des­si­ner la lysine (vous savez, l'acide ami­né), on pour­ra uti­li­ser le code sui­vant :

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

 

Céti­pa­bo ?!

Ah tiens, puisqu'on parle d'acide ami­né… Cer­tains d'entre eux, comme la phé­ny­la­la­nine, com­portent des cycles. Et il y a donc un moyen de repré­sen­ter les cycles !

Pour des­si­ner un cycle, on va uti­li­ser l'opérateur "*" sui­vi du nombre d'atomes com­po­sant la chaîne prin­ci­pale du cycle puis don­ner les liai­sons à des­si­ner :

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

Reve­nons à la phé­ny­la­la­nine :

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

 

Quelques infor­ma­tions sur le code uti­li­sé pour des­si­ner cet acide ami­né. Comme vous avez pu le consta­ter, je n'ai pas uti­li­sé

*6(-=-=-=)

 , mais

**6([6,0.5]——)

  pour des­si­ner le cycle. La double étoile per­met de des­si­ner un cercle au centre du cycle. C'est pour­quoi je n'ai mis ensuite que des liai­sons simples dans le cycle. Ensuite j'ai défi­ni l'angle et la taille du cycle avant même de défi­nir les liai­sons qu'il contient.

On peut aus­si col­ler des cycles entre eux, ce qui sera utile notam­ment pour des­si­ner le tryp­to­phane :

Capture d’écran 2015-08-02 à 16.36.48Comme vous pou­vez le voir sur le code le deuxième cycle (celui en bas à droite) est inclus dans le pre­mier. Et on peut faire beau­coup plus com­pli­qué ! Il a fal­lut défi­nir au niveau du grou­pe­ment NH l'arrivée de la liai­son pré­cé­dente et le départ de la liai­son sui­vante pour que la liai­son 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 beau­coup d'autres. Chem­fig per­met par exemple d'ajouter des dou­blets (pour des­si­ner des for­mules de Lewis), d'ajouter des + et des — pour les ions, de des­si­ner des réac­tions chi­miques, des dépla­ce­ments d'électrons. Il existe aus­si plein d'options de per­son­na­li­sa­tion pour ajou­ter de la cou­leur ou pour modi­fier le style des traits des liai­sons. N'hésitez pas à consul­ter la docu­men­ta­tion !

Ah et puisque le package per­met de des­si­ner des liai­sons, on peut aus­si l'utiliser pour faire tota­le­ment autre chose que des molé­cules, comme par exemple des orga­ni­grammes, des arbres, etc.

Et pour que vous n'oubliez pas, tout ceux qui ont recon­nu l'ATP sur la pre­mière figure de l'article pour envoyer votre article, contac­tez les admins ! 😉

Docu­men­ta­tion de Chem­fig

Mer­ci aux relec­teurs : Wocka, Clem_​, Waque­teu et Aki­ra.

Vous avez aimé ? Dites-le nous !

Moyenne : 0 /​ 5. Nb de votes : 0

Pas encore de vote pour cet article.

Partagez cet article




Commentaires

Une réponse à “Dessiner des molécules avec LaTeX”

  1. Avatar de Louzon Maxime
    Louzon Maxime

    Bon­jour,

    La molé­cule que vous avez repré­sen­tée est de l'ATP…

    Suis-je le pre­mier à l'avoir devi­né ?

    Cor­dia­le­ment,

Laisser un commentaire

Pour insérer du code dans vos commentaires, utilisez les balises <code> et <\code>.