decoration
Dans notre grande naïveté, nous pensons souvent que le manque de données constitue le principal obstacle au progrès - découvrez les faits qui complètent votre série de données, et les difficultés s'aplaniront. Mais les barrières sont souvent plus profondes et plus abstraites. Nous n'avons pas seulement besoin de données brutes, il nous faut également disposer d'une formulation adéquate. Ceux qui révolutionnent la pensée humaine ne sont pas avant tout ceux qui collectionnent le plus d'informations, mais ceux qui conçoivent la trame de nouvelles structures intellectuelles. Stephen Jay Gould Faute d'une métaphore appropriée, Le sourire du flamand rose, Réflexions sur l'histoire naturelle

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