Que signifie l'erreur: « Option clash for package <nom> »?

  • Message: Option clash for package <nom>
  • Origine: LaTeX.

L'extension <nom> a été chargée deux fois avec des ensembles d'options qui entrent en conflit.

Les cas non problématiques

Plusieurs cas ne génèrent aucune erreur. Le simple est le suivant :

\usepackage[a]{truc}
...
\usepackage{truc}

De la même manière, il ne dira rien pour le cas suivant (le second chargement ne faisant rien) :

\usepackage[a]{truc}
...
\usepackage[a]{truc}

Voici enfin le dernier cas où \LaTeX ne réagit pas :

\usepackage[a,b]{truc}
...
\usepackage[a]{truc}

De fait, la règle générale est la suivante : le premier chargement d'une extension définit un ensemble d'options ; si un autre \usepackage ou \RequirePackage appelle également l'extension, les options de cet appel peuvent ne pas étendre l'ensemble déclaré lors du premier chargement.

Il existe ici un cas particulier : l'extension fontenc peut être chargée autant de fois que nécessaire avec différentes options. Voir section 7.5.3 page 369 du LaTeX Companion ). FIXME

Les cas problématiques

Le cas simple

Le cas suivant génère le message d'erreur, même dans le cas où les options a et b sont des alias (\LaTeX ne poussant pas la vérification au-delà du simple nom) :

\usepackage[a]{truc}
...
\usepackage[b]{truc}

Heureusement, l'erreur (dans ce genre de cas) est facilement réparable une fois que vous avez examiné le préambule de votre document.

Le cas de l'extension qui appelle une autre extension

Ce cas donne du fil à retordre. Supposons que l'extension truc charge l'extension machin avec l'option b et que votre document indique (dans cet ordre ou l'ordre inverse) :

\usepackage{truc}
...
\usepackage[a]{machin}

Alors, l'erreur sera détectée, même si vous n'avez chargé explicitement machin qu'une seule fois. En appuyant sur H lorsque \LaTeX croise le problème lors de la compilation, les options en conflit sont affichées. Si cela ne marche pas, il faudra procéder à une analyse des fichiers journaux comme décrit dans la question « Comment traiter les erreurs ? ». Il faut ici savoir que le processus de chargement de chaque fichier est mis entre parenthèses dans le journal. Aussi, si l'extension truc charge graphics, le journal contiendra quelque chose comme :

(<path>/truc.sty ...
...
(<path>/graphics.sty ...
...)
...
)

Si nous avons affaire à une extension truc qui charge l'extension machin sans les options qui vous intéresse, vous devez demander à \LaTeX de glisser des options lorsque truc le charge :

\PassOptionsToPackage{option1,option2}{machin}
\usepackage{truc}

La commande \PassOptionsToPackage dit à \LaTeX de se comporter comme si la liste des options données étaient passées quand il charge enfin l'extension.

Le cas de la classe qui appelle une autre extension

Dans ce cas, on peut tenter une des solutions suivantes :

  • spécifier les options requises en tant qu'options globales au niveau de \documentclass ;
  • charger une extension avant \documentclass avec la commande \RequirePackage. Voir section 2.1.1 du LaTeX Companion FIXME pour plus de détails ;
  • placer une commande \PassOptionsToPackage avant \documentclass.

Le cas des options incomptibles

Si l'extension truc ou la classe machin charge une extension avec une option qui entre en conflit avec ce dont vous avez besoin, vous êtes bloqué. Un exemple d'options opposées est celui de draft et final pour l'extension graphics. Dans un tel cas, vous devez modifier l'extension ou la classe (sous réserve des termes de sa licence). Il peut s'avérer utile de contacter l'auteur : il peut avoir une alternative utile à suggérer.


Sources :

2_programmation/erreurs/o/option_clash_for_package.txt · Dernière modification: 2021/04/10 18:55 par yannick.tanguy
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0