Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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) 
-}} 
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0