Sciences

Écrire la chimie avec \(\LaTeX\)

Lors de la rédaction de mon mémoire de thèse, j’ai dû écrire un bon nombre d’éléments chimiques, de formules ou de réactions chimiques ou encore réaliser des dessins de molécules. Cet article vise à vous présenter les différents solutions que j’ai retenues et à vous présenter les bases pour bien débuter.

Écrire les éléments chimiques

Commençons par le début. C’est vers le 5ᵉ siècle avant Jésus-Christ que naît pour la première fois la notion d’atome par les philosophes grecs… mouais, peut-être pas à ce début-là. :-)

Bref, comme vous le savez tous, le monde est constitué de briques élémentaires (pas si élémentaires que ça, mais ce n’est pas important ici) appelées atomes et qui sont au nombre de 83 stables naturellement. On y retrouve l’oxygène, le carbone, le fer, le mercure ou encore l’uranium. Chacun de ces éléments porte une abréviation qui est normalisée est référencé dans le tableau périodique des éléments que vous pouvez trouver ci-dessous.

Tableau périodique des éléments chimiques
Tableau périodique des éléments chimiques (création \(\LaTeX\) disponible sur ce lien)

Ces différents éléments peuvent alors se combiner en molécules comme le \(\text{CO}_2\), l’\(\text{Al}_2\text{O}_3\) ou encore \(\text{NaCl}\).

Se pose alors la question de l’écriture de ces éléments ou molécules dans un document \(\LaTeX\). Certes, pour le sel \(\text{NaCl}\) on pourrait tout simplement écrire les lettres, mais quand des chiffres en indice cela devient un peu plus compliqué et on a vite fait d’opter pour des solutions pas très belles, comme dans un environnement mathématique qui va mettre les lettres en italique, chose qui ne se fait pas.

Dans ce cas, j’ai utilisé le package Chemmacros qui permet d’écrire les différents éléments et bien d’autres choses encore. Pour l’importer dans votre document, il suffit de rajouter au préambule les deux lignes suivantes :

\usepackage{chemmacros}
\chemsetup{modules=all}

La seconde ligne permet de charger l’ensemble des modules existants dans le package, cela évitera d’être dérangé par la suite pour l’utilisation de macros spécifiques.

Une fois chargé, le package s’utilise de la façon suivante pour les molécules les plus simples :

  • \ch{NaCl} va donner \(\text{NaCl}\)
  • \ch{Al2O3} va donner \(\text{Al}_2\text{O}_3\) ; comme vous pouvez le voir, le 2 et le 3 vont être automatiquement placés en indice.
  • \ch{CuSO4 $\cdot$ 5 H2O} va donner \(\text{CuSO}_4 ⋅ 5 \text{H}_2\text{O}\) ; dans ce cas, vous voyez qu’il n’y a plus à se poser trop de question sur l’écriture de ces formules. Ici le $\cdot$ est bien à mettre entre dollars cas c’est un caractère mathématique, vous aurez une erreur s’ils ne sont pas présents. Enfin, il est important de mettre une espace entre le 5 et le H2O sinon il sera placé en indice devant le H.

Il est ensuite possible de complexifier un peu l’ensemble en ajoutant par exemple les phases des molécules. En effet, la molécule d’eau \(\text{H}_2\text{O}\) peut par exemple être solide, liquide ou gazeuse. Le package propose alors une macro pour pouvoir le noter : \sld{}, \lqd{} et \gas{}. Un quatrième état qui peut-être utile est quand un élément ou une molécule est sous forme aqueuse : \aq{}. Voilà quelques exemples de cette notation : \(\text{CuSO}_4(\text{sol})\), \(\text{H}_2\text{O}(\text{liq})\) ou encore \(\text{Cu}^{2+}(\text{aq})\).

Si vous souhaitez que les états soient notés en indice, il vous suffit de rajouter cette option dans le préambule :

\chemsetup[phases]{pos=sub}

Vous obtiendrez alors : \(\text{CuSO}_{4(\text{sol})}\), \(\text{H}_2\text{O}_{(\text{liq})}\) et \(\text{Cu}^{2+}_{(\text{aq})}\) qui sont déjà beaucoup plus jolis.

Vous commencez à comprendre pourquoi ce package devient indispensable ? :-)

J’ai présenté ici les principales fonctions pour l’écriture des molécules chimiques. Je vous invite à aller regarder la documentation si vous souhaitez voir les autres, il existe encore quelques subtilités intéressantes et d’autres notations comme celle des isotopes (\(^{14}\text{C}\)) ou encore la représentation des orbitales électroniques.

Écrire les réactions chimiques

Maintenant que j’ai détaillé l’écriture des molécules, passons aux réactions chimiques. De la même façon qu’il existe deux environnements possibles pour les équations mathématiques (dans un paragraphe ou centré sur une nouvelle ligne), il est possible d’en faire de même pour les réactions chimiques.

Écriture de réaction dans un paragraphe

Le premier cas utilise la macro vu précédemment de la façon suivante :

\ch{CuSO4 $\cdot$ 5 H2O -> CuSO4 + 5 H20}

Le résultat est alors le suivant : \(\text{CuSO}_4 ⋅ 5 \text{H}_2\text{O} → \text{CuSO}_4 + 5 \text{H}_2\text{O}\).

Si on continue la décomposition et que les éléments passent à l’état ionique, on utilise alors les macros \pch et \mch pour noter le degré d’oxydation respectivement positif et négatif :

\ch{CuSO4 $\cdot$ 5 H2O -> Cu\pch[2] + SO4\mch[2] + 5 H20}

Le résultat est alors le suivant : \(\text{CuSO}_4 ⋅ 5 \text{H}_2\text{O} → \text{Cu}^{2+} + \text{SO}_4^{2-} + 5 \text{H}_2\text{O}\).

Écriture de réaction en environnement

De la même façon qu’il existe l’environnement equation, le package propose l’environnement reaction. Celui s’utilise exactement de la même façon que précédemment pour les notations des réactions :

\begin{reaction}
CuSO4 $\cdot$ 5 H2O -> Cu\pch[2] + SO4\mch[2] + 5 H2O
\end{reaction}

Comme pour l’environnement equation, il est possible de ne pas numéroter la réaction en utilisant une *.

Enfin, de la même façon qu’il existe l’environnement align pour aligner plusieurs équations mathématiques, l’environnement reactions fonctionne de la même façon pour notre cas. Voici un exemple, ici le caractère & désigne à quel endroit les réactions doivent s’aligner :

\begin{reactions}
3 A &-> B + C \\
4 D + E &-> F 5
\end{reactions}

Quid des références croisées aux réactions ?

Peut-être utilisez-vous les références croisées pour citer un numéro d’équation dans un paragraphe via le duo \label{} et \ref{}. Il est également possible dans le cas où la réaction chimique est numérotée de faire de même, bien que ceci soit légèrement plus compliqué.

Nous devons faire appel ici à un nouveau package appelé Cleveref et qui s’importe de cette façon :

\usepackage[french]{cleveref}

On doit ensuite créer et définir un format à une nouvelle catégorie de référence par les deux commandes ci-dessous, on l’appellera ici reaction :

\crefname{reaction}{}{}
\crefformat{reaction}{{#2#1#3}}

Le \crefformat définit ici va donner lors d’une référence dans un paragraphe ceci : \(\{1\}\). Sans cela, le mot « réaction » est écrit par défaut à toutes les références ce qui peut être gênant dans certains cas, par exemple si on souhaite écrire « voire réaction \(\{1\}\) et \(\{3\}\) » sans subir une répétition du mot.

Une fois chargé, le package s’utilise de la façon suivante : du côté de l’équation on ajoute un label classique de la façon suivante :

\begin{reaction}
CuSO4 -> Cu\pch[2] + SO4\mch[2] \label{sulfate_copper}
\end{reaction}

Enfin, dans le paragraphe, il suffit de faire appel à cette réaction grâce à la macro suivante : \cref{sulfate_copper} et le tour est joué. :-)

Pour terminer cette partie, de la même façon qu’il existe l’environnement \listeoffigures et \listeoftables, le package propose une macro \listofreactions pour créer une liste de toutes les réactions présentes dans votre document. Par défaut, la liste ne vous montrera que des « Réaction \(\{1\}\) », « Réaction \(\{2\}\) », « Réaction \(\{3\}\) », etc. Vous avez alors la possibilité de donner une légende plus détaillée à chaque réaction en ajoutant un commentaire de cette façon :

\begin{reaction}[Décomposition du sulfate de cuivre pentahydrate]
CuSO4 $\cdot$ 5 H2O -> Cu\pch[2] + SO4\mch[2] + 5 H20
\end{reaction}

Il sera alors affiché dans la liste des réactions ceci :

Dessiner des molécules chimiques

Dernière partie de cet article qui va maintenant présenter un package spécifique au dessin des molécules chimiques. Nous ferons appel ici au package Chemfig :

\usepackage{chemfig}

Je ne vais pas détailler ici l’intégralité du package car celui-ci est très complet et permet énormément de choses. De plus, il existe une documentation en français de plus de 80 pages pour les cas particuliers que je vous conseille vivement de conserver dans un coin de votre bureau. ;-)

Je vais plutôt présenter les grandes lignes du package pour vous donner les bases.

On va voir ici trois types de molécules du cas le plus simple au plus compliqué. Enfin, comme pour la partie précédente, on verra comment créer des réactions chimiques contenant le schéma des molécules.

Molécule linéaire

Commençons doucement avec une molécule linéaire constituée de trois atomes : la molécule d’eau \(\text{H}_2\text{O}\) qui ressemble comme on le dit souvent à une tête de Mickey. À gauche se trouve la commande et à droite la figure générée :

\chemfig{H-[:30]O-[:-30]H}

Décortiquons maintenant la macro :

  • les traits sont générés par la présence du caractère - entre les lettres H et O
  • la partie entre crochet correspond à l’angle que prend le trait par rapport au caractère à gauche : ici, le trait a un angle de 30° par rapport à H pour se rendre sur le O. De l’autre côté, il a un angle de -30° pour aller sur le second H

Vous voyez que ce n’était finalement pas si compliqué. :-)

Dans le cas de la molécule d’eau il y a seulement des liaisons simples (une paire d’électron), mais dans certains cas cela peut-être des liaisons doubles, voire triples. Le tableau ci-dessous montre toutes les notations possibles.

Liste des liaisons possibles entre deux atomes

Molécule ramifiée

Passons désormais à une molécule un peu plus complexe qui présente des ramifications. On va dessiner ici la molécule de l’ester (monomère du polyester).

\chemfig{R-C(=[:30]O)-[:-30]O-R'}

On voit ici le rôle important des parenthèses dans la formule : elles servent à définir une des branches de la ramification. Ici la partie (=[:30]O) dit qu’on crée une ramification sur l’atome de carbone avec une double liaison vers un atome d’oxygène avec un angle positif de 30°. Une fois la parenthèse fermée, on repart depuis l’atome de carbone central pour créer la liaison inférieure.

Molécule cyclique

Dernier exemple qui est souvent rencontré en chimie organique : les cycles aromatiques.

On va dessiner dans cet exemple la molécule du 2,4,6-Trichlorophénol qui va par ailleurs utiliser ce qu’on a vu à la partie précédente.

Créons d’abord le cycle aromatique :

\chemfig{*6(-=-=-=)}

Le *6 veut dire que l’on a affaire à une molécule cyclique constituée de 6 côtés, ensuite l’alternance des liaisons simples et doubles part du coin en bas à gauche puis dans le sens trigonométrique.

Ensuite, au niveau des ramifications, on retrouve les parenthèses et les crochets pour définir les angles des liaisons périphériques ce qui donne la molécule suivant :

\chemfig{*6(-(-[:-90]Cl)=-(-[:45]Cl)=(-[:90]OH)-(-[:135]Cl)=)}

Réactions de molécules

Pour terminer ce billet qui commence à être long, je voudrais terminer sur le dessin de réactions de molécules, un peu comme ce qui a été vu dans la partie 2 sur les réactions chimiques mais avec les formules dessinées.

Pour cela le package Chemfig propose l’environnement suivant :

\schemestart
<réaction>
\schemestar

On va par exemple détailler la réaction entre un acide carboxylique et un alcool qui donne le résultat ci-dessous :

\schemestart
\chemfig{R_1-C(=[:45]O)-[:-45]OH}
\+
\chemfig{HO-R_2}
\arrow{<=>}
\chemfig{R_1-C(=[:45]O)-[:-45]C-R_2}
\+
\ch{H2O}
\schemestop

On peut alors ici vite comprendre comment fonctionne l’environnement que je vous laisse étudier à tête reposée. Vous pourrez par ailleurs voir qu’il est parfaitement possible de mélanger les environnements Chemfig et Chemmacros qui fonctionnent très bien ensemble.

Conclusion

Ce billet avait pour objectif de présenter deux packages permettant la rédaction de la chimie avec \(\LaTeX\). Il n’était cependant pas possible de tout détailler tellement les packages sont complets et riches en fonctionnalités. Le but était ici de mentionner les fonctions principales pour bien commencer. Je vous laisse ensuite aller lire les documentations qui sont des mines d’informations et surtout pratiquer de votre côté, ce n’est que comme cela que vous progresserez.

Il existe par ailleurs de nombreux autres packages spécialisés pour la chimie. À ce jour, je n’ai eu besoin que de ces deux packages qui fonctionnent très bien pour obtenir ce que je voulais. Une liste exhaustive des packages de chimie est disponible par ici si vous souhaitez les regarder de plus près.

Si vous avez des remarques ou des questions, l’espace commentaire est là pour vous, n’hésitez pas.

Pour finir, je vais vous laisser avec un des schémas réalisé avec Chemfig présent à la fin de la documentation en guise d’exemple de ce qu’il est possible de faire avec ce package, probablement après quelques heures de travail par contre. :-)

Molécule du Taxotère
Molécule du Taxotère (Wikipédia)

Sources

Crédits photo

Photo de Hans Reniers sur Unsplash

One Comment