decoration
Quand on suit une mauvaise route, plus on marche vite, plus on s'égare ; et le moyen de revenir sur ses pas, quand on a parcouru un espace immense ? L'épuisement des forces ne le permet pas ; la vanité s'y oppose sans qu'on s'en aperçoive. L'entêtement des principes répand sur tout ce qui environne un prestige qui défigure les objets. On ne les voit plus comme ils sont, mais comme il conviendrait qu'ils fussent. Denis Diderot Pensées sur l'interprétation de la Nature

The iopart.cls class and the amsmath.sty package

Trucs et astuces…

Il y a une incompatibilité entre la classe proposée par l’éditeur IOP et le package fort utile amsmath.sty. Ce problème semble ne pas émouvoir les responsables d’IOP. Pour les personnes habituées comme moi aux packages de l’AMS, c’est inadimissible qu’un éditeur nous force à ne pas les utiliser.

La classe iopart.cls redéfinit visiblement des commandes définies par amsmath.sty. En réalité je n’ai trouvé que l’environnement d’équation

\begin{equation*}
...
\end{equation*}

qui entre en conflit.

Je propose donc la solution suivante, qui consiste à appeler la classe iopart.cls comme requis par l’IOP, puis à vider la définition de l’environnement d’équation ci-dessus juste avant d’appeler le package amsmath.sty :

\documentclass[12pt]{iopart}
... [packages divers]

\expandafter\let\csname equation*\endcsname=\relax
\expandafter\let\csname endequation*\endcsname=\relax
\usepackage{amsmath}

... [packages divers]


\begin{document}
...
\end{document}

J’ai testé avec succès ce code sur un article utilisant abondamment les ressources des packages de l’AMS.

Attention, il ne faut pas appeler le package compagnon à la classe iopart.cls appelé iopams.sty qui empiète encore plus sur les définitions des packages de l’AMS.

Ce code peut paraître un peu barbare, mais il signifie la chose suivante : lorsqu’on souhaite « vider » une commande en LaTeX, on la redéfinit à \relax. Il se trouve que les deux commandes à redéfinir ne sont pas réellement des commandes “\blabla” à cause de l’étoile en fin de nom. C’est pourquoi il faut avoir recours au subterfuge du \csname ... \endcsname.

Je ne sais pas si ces deux lignes supplémentaires suffisent à régler complètement l’incompatibilité. Si ce n’est pas le cas, je souhaiterais en être informé.