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