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
2_programmation:erreurs:c:command_already_defined [2020/10/25 21:58]
jejust Changement de titre.
2_programmation:erreurs:c:command_already_defined [2021/01/13 00:29]
jejust Fusion avec "generalites/erreurs/command_already_defined".
Ligne 17: Ligne 17:
 Par exemple, on ne peut pas définir un environnement ''​graf'',​ Par exemple, on ne peut pas définir un environnement ''​graf'',​
 car <​latex>​\TeX{}</​latex>​ définit une commande de bas niveau appelée ''​\endgraf''​. car <​latex>​\TeX{}</​latex>​ définit une commande de bas niveau appelée ''​\endgraf''​.
 +
 +-----
 +
 +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]] sont correctes. Cependant, il a ici matière à utiliser la version de la commande ''​\iint''​ de l'​extension [[ctanpkg>​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]]. ​
 +
 +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]] - [[ctanpkg>​txfonts]] » fonctionne ainsi : [[ctanpkg>​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]] 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]] et va créer une commande ''​\TXFiint''​ contenant la définition de l'​extension [[ctanpkg>​txfonts|txfonts]].
 +
  
 ----- -----
 //​Sources://​ //​Sources://​
 +  * [[faquk>​FAQ-alreadydef|Package reports "​command already defined"​]],​
   * [[https://​latex.developpez.com/​faq/​erreurs?​page=C]],​   * [[https://​latex.developpez.com/​faq/​erreurs?​page=C]],​
   * [[https://​www.latex-project.org/​help/​books/#​french|LaTeX Companion, 2e édition]], Frank Mittelbach, Michel Goossens, Johannes Braams, David Carlisle, Chris Rowley (Pearson, 2006) ; ISBN: 978-2-7440-7182-9. Annexe B, //Détecter et résoudre les problèmes//,​ reproduite avec l'​aimable autorisation de l'​éditeur.   * [[https://​www.latex-project.org/​help/​books/#​french|LaTeX Companion, 2e édition]], Frank Mittelbach, Michel Goossens, Johannes Braams, David Carlisle, Chris Rowley (Pearson, 2006) ; ISBN: 978-2-7440-7182-9. Annexe B, //Détecter et résoudre les problèmes//,​ reproduite avec l'​aimable autorisation de l'​éditeur.
2_programmation/erreurs/c/command_already_defined.txt · Dernière modification: 2021/01/13 00:29 par jejust
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0