Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente | |||
1_generalites:erreurs:command_already_defined [2021/01/13 00:29] jejust Suppression après fusion avec "generalites/erreurs/c/command_already_defined". |
— (Version actuelle) | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Que signifie l'erreur « command already defined » ? ====== | ||
- | Vous avez chargé deux extensions et la seconde signale que l'une des commandes qu'elle définit est déjà présente. | ||
- | |||
- | Par exemple, [[ctanpkg>txfonts|txfonts]] et [[ctanpkg>amsmath|amsmath]] définissent toutes deux une commande ''\iint'' (et ''\iiint'' et ainsi de suite). Si vous saisissez cette séquence dans votre code : | ||
- | |||
- | <code latex> | ||
- | \usepackage{txfonts} | ||
- | \usepackage{amsmath} | ||
- | </code> | ||
- | |||
- | alors vous obtiendrez un message d'erreur de la forme : | ||
- | |||
- | <code latex> | ||
- | ! LaTeX Error: Command \iint already defined. | ||
- | Or name \end... illegal, see p.192 of the manual. | ||
- | </code> | ||
- | |||
- | En règle générale, les définitions de l'extension [[ctanpkg>amsmath|amsmath]] sont correctes. Cependant, il a ici matière à utiliser la version de la commande ''\iint'' de l'extension [[ctanpkg>txfonts|txfonts]] : ses polices ''tx'' ont un double symbole intégral qui n'a pas besoin d'être obtenu par « bidouille » comme le fait [[ctanpkg>amsmath|amsmath]]. | ||
- | |||
- | Ce cas se retrouve lorsque vous chargez plusieurs extensions de symboles et que chacune définit le même symbole (''\euro'' est un cas fréquent). | ||
- | |||
- | Il existe des cas similaires où une extension redéfinit la commande d'une autre extension mais aucune erreur ne se produit car la redéfinition n'utilise pas ''\newcommand''. Souvent, dans ce cas, vous ne remarquez le changement que parce que vous pensiez obtenir la définition donnée par la première extension. Le couple « [[ctanpkg>amsmath|amsmath]] - [[ctanpkg>txfonts|txfonts]] » fonctionne ainsi : [[ctanpkg>txfonts|txfonts]] ne provoque pas d'erreurs s'il est chargé //après// mais il impose sa définition. | ||
- | |||
- | Vous pouvez résoudre le problème en enregistrant et en restaurant la commande. Les habitués de la programmation peuvent le faire mais il existe une extension pour traiter directement ce point : [[ctanpkg>savesym|savesym]] qui se limite à définir deux commandes, à savoir ''\savesymbol'' et ''\restoresymbol''. En voici un exemple : | ||
- | |||
- | <code latex> | ||
- | \usepackage{savesym} | ||
- | \usepackage{amsmath} | ||
- | \savesymbol{iint} | ||
- | \usepackage{txfonts} | ||
- | \restoresymbol{TXF}{iint} | ||
- | </code> | ||
- | |||
- | Ce code va conserver la définition de ''\iint'' de l'extension [[ctanpkg>amsmath|amsmath]] et va créer une commande ''\TXFiint'' contenant la définition de l'extension [[ctanpkg>txfonts|txfonts]]. | ||
- | |||
- | ----- | ||
- | |||
- | //Source:// [[faquk>FAQ-alreadydef|Package reports "command already defined"]] | ||
- | |||
- | {{htmlmetatags>metatag-keywords=(LaTeX,errors) | ||
- | metatag-og:title=(Que signifie l'erreur « command already defined ») | ||
- | metatag-og:site_name=(FAQ LaTeX francophone) | ||
- | }} |