IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

FAQ LaTeX Discussion :

Comment utiliser \newcommand ?


Sujet :

FAQ LaTeX

  1. #1
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 289
    Points
    11 289
    Billets dans le blog
    5
    Par défaut Comment utiliser \newcommand ?
    La commande \newcommand permet de définir ses propres commandes, il y a différentes façons de l'utiliser :
    • \newcommand sans argument :
      Par exemple on peut définir cette commande \newcommand{\ffr}{fédération française de rugby}. On gagne ainsi du temps, il est simple de taper \ffr. De plus si à la fin du document on s'aperçoit que l'on doit mettre des majuscules à Fédération Française de Rugby, il suffit juste de changer la définition de la commande. On sépare le fond de la forme, le texte de remplacement aura toujours la même forme sur tout le document.
    • \newcommand avec argument :
      Elle s'utilise de la façon suivante \newcommand{<nom>}[<nb d'arguments>]{<code à effectuer>}. Il est possible d'utiliser jusqu'à 9 arguments. On peut par exemple définir une commande qui mettra en page le nom d'un auteur par exemple : \newcommand{\aut}[2]{#1~\textsc{#2}}. On l'utilisera ainsi dans le texte \aut{prénom}{nom}. Le texte de remplacement sera donc le prénom rattaché au nom par un espace insécable. Ce nom sera lui composé en petites capitales :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      \documentclass[10pt,a4paper]{article}
      \usepackage[utf8]{inputenc}
      \newcommand{\aut}[2]{#1~\textsc{#2}}
      \begin{document}
      \aut{Pierre}{Durant}
      \end{document}
      Imprime

      Nom : aut.PNG
Affichages : 18706
Taille : 3,3 Ko
    • \newcommand avec option :
      Il est possible d'utiliser une commande avec un argument optionnel (qui peut être vide) : \newcommand{<nom>}[<nb arg>][<option par défaut>]{<code à effectuer>}. Si on ne passe pas d'option à la commande dans le texte alors c'est option pas défaut qui sera développée, sinon comme on s'en doute, cela sera l'option que l'on aura passée à cette commande. Un exemple sera bien plus parlant. Le code suivant :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      \documentclass[10pt,a4paper]{article}
      \usepackage[utf8]{inputenc}
      \newcommand{\opt}[2][défaut]{\emph{#2} \textbf{#1}}
      \begin{document}
      \opt{sans l'option, on imprime}
       
      \opt[ce que l'on veut]{avec l'option on imprime}
      \end{document}
      s'imprime en :

      Nom : opt.PNG
Affichages : 18608
Taille : 9,8 Ko
    Images attachées Images attachées  

  2. #2
    Membre actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 135
    Points : 283
    Points
    283
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Je remarque juste une typo dans le titre et la première phrase : \newcommand et non \newcommande.

    - Ne pourrait-on pas ajouter une remarque (sans entrer dans les détails du traitement des commandes par Latex) sur les espaces après une commande, par exemple "La \ffr est la première fédération sportive dans la ville de G..." imprime le texte "La fédération française de rugbyest la première fédération sprotive dans la ville de G..." ?
    Soit parler de xspace, soit dire qu'il faut insérer les caractères {} après l'appel de la commande.

  3. #3
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 289
    Points
    11 289
    Billets dans le blog
    5
    Par défaut
    \newcommand est déjà corrigée dans la faq. Pour le reste c'est prévu je compte faire une q/r sur ces espaces et donc je mettrai un renvoie dans cette question.

  4. #4
    Membre averti
    Avatar de Namrod
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2012
    Messages : 215
    Points : 349
    Points
    349
    Par défaut
    Bonjour.

    Il serait peut être intéressant d'ajouter un court passage sur les avantages de \newcommand sur \def. La première permet en effet de s'assurer de ne pas redéfinir de macro existante, ce qui peut poser problèmes dans certains cas, tout en facilitant la création de commandes avec un argument optionnel.

  5. #5
    Membre actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 135
    Points : 283
    Points
    283
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Namrod Voir le message
    Bonjour.

    Il serait peut être intéressant d'ajouter un court passage sur les avantages de \newcommand sur \def. La première permet en effet de s'assurer de ne pas redéfinir de macro existante, ce qui peut poser problèmes dans certains cas, tout en facilitant la création de commandes avec un argument optionnel.
    Je pense qu'il ne vaut mieux pas embrouiller les gens avec les primitives TeX. \def est une primitive TeX qu'on doit (pour des applications courantes du moins) éviter d'employer dans un document LaTeX. Quelqu'un lisant les fac LaTeX est sûrement novice avec ces commandes alors je ne suis pas sûr qu'il soit bénéfique de parler de cela.

  6. #6
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 289
    Points
    11 289
    Billets dans le blog
    5
    Par défaut
    Je vais couper la poire en deux, en parler sans faire mention de \def. J'hésitais à en faire mention dans\renewcommand.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Il serait intéressant de parler de la variante étoilée.

  8. #8
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 289
    Points
    11 289
    Billets dans le blog
    5
    Par défaut
    Pas faux, mais ca commence à aller chercher plus loin, je sais pas si c'est utile pour une faq (que personne ne lit j'en sais rien et j'aimerai avoir des retours). Et puis si je commence avec \@ifstar, je ne vais pas pouvoir m’empêcher de mettre des @ partout (c'est zoli dans un code ) et ça va faire peur.

  9. #9
    Membre actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 135
    Points : 283
    Points
    283
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par -Nikopol- Voir le message
    Pas faux, mais ca commence à aller chercher plus loin, je sais pas si c'est utile pour une faq (que personne ne lit j'en sais rien et j'aimerai avoir des retours). Et puis si je commence avec \@ifstar, je ne vais pas pouvoir m’empêcher de mettre des @ partout (c'est zoli dans un code ) et ça va faire peur.
    Je pense que _Karnaj_ parlait de \newcommand* simplement et pas de définir des commandes avec des versions étoilées

  10. #10
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 289
    Points
    11 289
    Billets dans le blog
    5
    Par défaut
    Je sais pas si on doit parler de * il faut je pense expliquer comment ce la fonctionne.
    Tu verrais ça comment l’explication ?

  11. #11
    Invité
    Invité(e)
    Par défaut
    Juste dire qu'avec newcommand* on crée des commandes courtes c'est-à-dire dont l'argument ne peut pas contenir de changements de paragraphes et que donc c'est utile de l'utiliser pour les commandes qui doivent respecter ça (si on ne le fait pas, on aura une erreur). Un truc du genre devrait suffire.

  12. #12
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 289
    Points
    11 289
    Billets dans le blog
    5
    Par défaut
    Au temps pour moi, il est tard, j'avais pensé à \foo* et pas \newcommand*.

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2009, 13h06
  2. Comment utiliser un cache ?
    Par TOM-Z dans le forum XMLRAD
    Réponses: 4
    Dernier message: 14/03/2003, 10h55
  3. comment utiliser actionscript ?
    Par webs dans le forum Flash
    Réponses: 3
    Dernier message: 10/02/2003, 00h11
  4. Comment utiliser OUT ?
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 3
    Dernier message: 20/07/2002, 10h35
  5. Réponses: 5
    Dernier message: 11/06/2002, 16h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo