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

Programmation (La)TeX avancée Discussion :

comment connaitre le fichier source d'une commande ?


Sujet :

Programmation (La)TeX avancée

  1. #1
    Membre régulier
    Avatar de floyd973
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 140
    Points : 119
    Points
    119
    Par défaut comment connaitre le fichier source d'une commande ?
    Bonjour tout le monde !

    Afin de progresser, j'aimerai m’intéresser au code source de certaines commandes qui ne ne sont qu'une surcouche de macro TeX. Normalement, pour cela, il me suffit de chercher le fichier.sty dans lequel se trouve la description de la commande à analyser.
    Cependant, lorsqu'il s'agit de commandes propres à certains packages comme pst-circ, il est assez facile de retrouver la commande dans le fichier.sty, mais pour d'autres, c'est le parcours du combattant . Par exemple, si je veux découvrir la description de la commande \overrightarrow pour l'analyser et/ou la modifier, je ne sais pas à quelle extension appartient cette commande. J'ai tenté de taper dans la barre de recherche depuis le dossier miktex (pour étendre la recherche) "overrightarrow , mais rien.

    D'ailleurs, dans la FAQ LaTEX \ MAthématiques , Nikopol redéfinit cette commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \renewcommand*{\overrightarrow}[1]{\vbox{\halign{##\cr\tiny\rightarrowfill\cr\noalign{\nointerlineskip\vskip1pt}$\mskip2mu#1\mskip2mu$\cr}}}

    J'imagine que pour une telle modification, soit il faut connaître par cœur cette suite de commande ( ) ou bien aller la chercher dans un fichier.sty !

    J'aimerai savoir si il existe un moyen de connaître le fichier source auquel est associée une commande ?

    C'est uniquement pour me familiariser avec le langage TeX pour avoir par la suite, plus de liberté et de possibilité dans la création ou modification de commandes.

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 344
    Points : 561
    Points
    561
    Par défaut
    Bonjour,

    Pour connaitre le contenu d'une commande, pas besoin d'aller fouiller dans les fichiers de LaTeX (même si je ne te cache pas que j'aime le faire aussi...). LaTeX dispose de deux commandes permettant de faire ça :

    • \show : affiche la commande dans le fichier log (ou la console de ton éditeur) ;
    • \meaning : affiche la commande dans le fichier PDF ;


    Voici un exemple avec \meaning, la macro \show fonctionne de la même manière

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    % documentclass + préambule de ton choix
     
    \begin{document}
     
    	\meaning\overrightarrow
     
    \end{document}
    Et tu auras le résultat suivant dans ton fichier PDF :

    Nom : Capture d’écran 2015-05-17 à 09.33.39.png
Affichages : 193
Taille : 26,9 Ko

    Il se peut que tu n'obtiennes aucun résultat, par exemple dans le cas ou tu essayes d'afficher une commande marquée comme \protected (exemple \meaning\LaTeX donnera \protect\LaTeX) ou si la commande est une primitive comme par exemple la commande \def où tu obtiendras... \def (les primitives n'ont pas de texte de remplacement).

    Après, pour vraiment trouver le fichier auquel appartient une macro, je suppose qu'il faut procéder par élimination entre les extensions que tu as chargé, le documentclass et les commandes de base de LaTeX que tu peux trouver dans le fichier latex.ltx (qui se trouve ici sur Mac : /usr/local/texlive/2014/texmf-dist/tex/latex/base/).

    En espérant t'aider
    La FAQ apporte souvent la solution aux problèmes
    Avant de demander de l'aide, pensez à faire un ECM ! Un problème bien expliqué est un problème à moitié résolu .

  3. #3
    Membre régulier
    Avatar de floyd973
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 140
    Points : 119
    Points
    119
    Par défaut
    Salut Benoist !

    Merci pour ta réponse !

    Chez moi, l'utilisation de \show ne fonctionne pas. Par contre \meaning oui, mais ....:

    Dans un premier temps, j'ai tapé : \meaning\overrigharrow et j'ai obtenu :

    Nom : res_com-meaning2.jpg
Affichages : 192
Taille : 14,5 Ko

    Vu que je n'obtenais pas le même résultat que toi, j'ai pensé qu'une extension devait corrompre l'affichage , alors j'ai procédé par élimination et j'ai remarqué qu'en enlevant dans mon préambule ( : ça il faut le savoir quand même, j'ai failli disjoncter en l'espace de 2 min):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \usepackage{amsmath, amssymb, mathrsfs} % il s'agit de l'un de ces trois packages
    .

    On obtenais :

    Nom : res_com_meaning.jpg
Affichages : 188
Taille : 30,1 Ko

    Ce qui est sûr, c'est que ta méthode permet d'avoir un aperçu de la description de la commande \overrightarrow.

    Sinon, je trouve quand même qu'on est vite limité dans l'emploie de ta méthode puisque le copier-coller du résultat du pdf vers l'éditeur n'est pas joli joli. Je pense que je ferais comme d'habitude, j'irai à la chasse aux fichiers.sty en espérant tomber sur le bon qui contient la commande recherchée.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 344
    Points : 561
    Points
    561
    Par défaut
    En effet, le résultat n'est pas exploitable directement, il faut le recopier, ce qui n'est pas forcément agréable pour les grosses commandes. Par contre \show fonctionne très bien, sans doute que c'est ton éditeur qui refuse de te l'afficher. En tout cas, j'arrive à le avoir avec TeXShop. Essaye de compiler avec la console (invite de commandes sous Windows), là tu verras la définition apparaitre

    Je m'attaque rarement à la modification des macros de LaTeX du coup je ne peux pas trop t'aider. Peut être que -Nikiopol- passera expliquer la démarche (ou Teguad).
    La FAQ apporte souvent la solution aux problèmes
    Avant de demander de l'aide, pensez à faire un ECM ! Un problème bien expliqué est un problème à moitié résolu .

  5. #5
    Membre régulier
    Avatar de floyd973
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 140
    Points : 119
    Points
    119
    Par défaut
    C'est surtout pour comprendre un peu les macros TeX en effectuant des modifications de façon empirique sur certains paramètres. Après, je ne suis pas du genre à modifier ce que je ne comprends pas.
    Comme tu dis, peut être que quelqu'un d'autre aura une autre solution.

    Merci à toi !

Discussions similaires

  1. Réponses: 9
    Dernier message: 26/01/2014, 12h00
  2. Réponses: 2
    Dernier message: 23/08/2012, 16h18
  3. Comment ouvrir un fichier excel avec une commande batch ?
    Par Alexandrebox dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 18/03/2010, 13h15
  4. [Juridique] Comment réutiliser le code source d'une classe ?
    Par mathieu dans le forum Général Java
    Réponses: 8
    Dernier message: 17/05/2004, 13h40

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