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édentesRévision précédente
Prochaine révision
Révision précédente
generalites:erreurs:c:command_already_defined [2019/07/15 12:35] jejust2_programmation:erreurs:c:command_already_defined [2022/10/10 13:45] (Version actuelle) – Annulation précédente modification dbitouze
Ligne 1: Ligne 1:
-====== Que veut dire l'erreur: ''Command <//nom//> already defined'' ? ======+====== Que signifie l'erreur: « Command nom⟩ already defined »? ======
  
-$\Reponse$  On a essayé de déclarer une commande, un environnement, un nouveau ''savebox'', une longueur ou un compteur avec un ''<//nom//>'' qui a déjà une signification pour <latex>\LaTeX{}</latex>. Dans ce cas, cette déclaration est ignorée et il faut choisir un autre nom.+  * **Message**: ''Command ⟨//nom//⟩ already defined'' 
 +  * **Origine**: //LaTeX//.
  
-$\Reponse$  Cette erreur est également déclenchée lors de l'utilisation de ''\newcommand'' avec un ''<//nom//>'' qui débute par ''\end//...//''même si ''\renewcommand'' affirme que ce ''<//nom//>'' est inutilisé.+$\Reponse$  On a essayé de déclarer une commande, un environnement, un nouveau ''savebox''
 +une longueur ou un compteur avec un ''//nom//'' qui a déjà une signification 
 +pour <latex>\LaTeX{}</latex>Dans ce cascette déclaration est ignorée 
 +et il faut choisir un autre nom.
  
-$\Reponse$  Elle survient enfin lorsqu'on essaie de définir un environnement ''<//nom//>'' et que les commandes ''\<//nom//>'' ou ''\end<//nom//>'' ont déjà une définition. 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''.+$\Reponse$  Cette erreur est également déclenchée lors de l'utilisation de ''\newcommand'' 
 +avec un ''⟨//nom//⟩'' qui débute par ''\end//...//'', même si ''\renewcommand'' affirme 
 +que ce ''⟨//nom//⟩'' est inutilisé. 
 + 
 +$\Reponse$  Elle survient enfin lorsqu'on essaie de définir un environnement ''//nom//'' 
 +et que les commandes ''\//nom//'' ou ''\end//nom//'' ont déjà une définition. 
 +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''.
  
 ----- -----
-//Source:// https://latex.developpez.com/faq/erreurs?page=C 
  
 +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://
 +  * [[faquk>FAQ-alreadydef|Package reports "command already defined"]],
 +  * [[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.
  
 {{htmlmetatags>metatag-keywords=(messages d'erreur de LaTeX,définition d'une commande,erreur newcommand,erreur renewcommand,commandes liées aux environnements) {{htmlmetatags>metatag-keywords=(messages d'erreur de LaTeX,définition d'une commande,erreur newcommand,erreur renewcommand,commandes liées aux environnements)
-metatag-og:title=(Que veut dire l'erreur: Command <nomalready defined ?)+metatag-og:title=(Que signifie l'erreur: Command nom⟩ already defined ?)
 metatag-og:site_name=(FAQ LaTeX francophone) metatag-og:site_name=(FAQ LaTeX francophone)
 }} }}
  
2_programmation/erreurs/c/command_already_defined.1563194118.txt.gz · Dernière modification : 2019/07/15 12:35 de jejust
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0