decoration
La science se distingue peut-être des autres activités intellectuelles, en centrant son intérêt sur l'agencement et le mode opératoire des objets naturels. Mais les scientifiques ne sont pas des machines à fabriquer automatiquement des inductions, dérivant exclusivement leurs schémas explicatifs des constantes relevées dans les phénomènes naturels (présumant que cette démarche d'esprit ne peut, en principe, que mener au succès, ce dont je doute fort). Les scientifiques sont des êtres humains baignant dans une culture et faisant de leur mieux pour tirer parti des outils bizarres de la déduction que l'esprit met à notre disposition, depuis la métaphore et l'analogie jusqu'à tous les envols de l'imagination féconde que C. S. Peirce a qualifiés d'“abduction”. Stephen Jay Gould Aux racines du temps

La classe iopart.cls et le package amsmath.sty

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é.