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

Discussion :

Exécuter du code sans rien afficher

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 168
    Points : 85
    Points
    85
    Par défaut Exécuter du code sans rien afficher
    Bonjour à tous,

    existe-t-il un environnement ou autres qui permet d'exécuter du code sans pour autant afficher quoi que ce soit sur le document final ?

    merci d'avance pour l'info.

  2. #2
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    Re,

    Si ça existe ? Posé comme ça... aucune idée.

    En revanche, ça doit pouvoir se coder sans trop de difficulté, mais tu devrais être plus explicite sur ce que tu veux.
    Un petit exemple serait le bienvenue
    Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un
    ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !)

    Une solution vous convient ? N'oubliez pas le tag


    )><))))°>

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 168
    Points : 85
    Points
    85
    Par défaut
    pas de problème.

    Voici mon problème en entier : je suis en train d'écrire ma propre class et sur la page de titre j'aimerais quelque chose ressemblant à cela :

    Auteurs : Isaac NEWTON
    Albert EINSTEIN
    ...

    Le problème étant que je ne sais pas toujours si j'ai un seul ou plusieurs auteur, donc j'ai créé un \newif pour savoir s'il doit ou pas mettre de 's' à auteur. Pour ceci je pensais modifier la variable \newifvar en modifier la macro \and (ajouter vartrue), mais pour le moment, je n'ai pas trouvé le moyen de faire ça puisque le \and viendra après dans le code. Il me faudrait donc effectuer le \@author à blanc avant histoire de voir s'il y a un \and ou pas dans \author.

    Je prends peut-être pas mon problème dans le bon sens alors si quelqu'un a une solution avec une autre démarche, je suis pas contre. Cependant j'ai pas très envie que se soit l'auteur qui détermine s'il y a plusieurs ou un seul auteur du dossier, j'ai vraiment envie que cela se fasse totalement automatiquement.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 168
    Points : 85
    Points
    85
    Par défaut
    bon bon, je suis toujours sur mon problème ... je le tourne dans tous les sens mais toujours aucune solution à l'horizon. J'ai regardé le package verbatim pour voir s'il y avait quelque chose à en tirer mais il fait tout l'inverse de ce que je souhaite faire

  5. #5
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    Bonjour,

    À mon avis, tu devrais plutôt chercher à directement tester la présence de \and dans la commande qui stocke les noms d'auteurs, sans chercher à "l'écrire" quelque part.
    Pour cela, la commande \isin du package xifthen me semblait prometteuse, mais je n'arrive pas à l'utiliser.

    En revanche, la commande \IfSubStr du package xstring semble faire l'affaire.
    Il faudra peut-être faire gaffe à ce que le(s) \and ne soi(en)t pas interprété(s). Il me semble que la documentation du package en parle...
    Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un
    ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !)

    Une solution vous convient ? N'oubliez pas le tag


    )><))))°>

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 168
    Points : 85
    Points
    85
    Par défaut
    Bonjour,

    J'ai réussi à faire ce que je souhaitais en magouillant un peu avec \IfSubStr, par contre je pense qu'il y aurait moyen de faire beaucoup plus simple avec \isin. Mon seul et unique problème avec cette macro est qu'elle n'interprète pas les macros qui se trouve des la chaine où l'on cherche un occurence d'une sous-chaine mais les voit comme des caractères uniques. J'ai essayé de trouver un moyen afin de forcer l'interprétation mais pour l'instant je n'ai rien.

    Quelqu'un aurait-il une solution à me proposer ? (... avec l'utilisation de \isin)

  7. #7
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    Bonjour,

    Peux-tu déjà nous montrer ce que tu as réussi à faire avec \IfSubStr ?
    Non seulement ça peut intéresser du monde (j'en suis) mais ça pourrait également donner de l'inspiration pour des pistes avec \isin, sait-on jamais...

    Y a-t-il une raison particulière à ce que tu préfère \isin à \IfSubStr ?
    Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un
    ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !)

    Une solution vous convient ? N'oubliez pas le tag


    )><))))°>

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 168
    Points : 85
    Points
    85
    Par défaut
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    [...]
    \renewcommand*{\and}{\&}
    \begin{tabular}[t]{rl}
       Author\IfSubStr{\@author}{\&}{s}{} : \gdef\and{\\ &} & \@author \\
    \end{tabular}
    [...]
    Mon problème avec \IfSubStr est qu'elle a un peu de mal avec les caractères spéciaux (&, \\, ...), je dois donc modifier \and dans un premier temps afin d'éviter une erreur de compilation. (Il faut noter que \IfSubStr interprète les macros !) Et finalement, je dois remodifier \and avec \gdef car un \renewcommand n'est pas global. J'ai essayé de mettre un \global devant mais ça n'a rien changé au résultat final. (D'ailleur si quelqu'un sait comment faire un "\globalrenewcommand" .... )

    Mon problème avec \isin est qu'elle n'interpète pas les macros et donc je ne peux pas vérifier si un \and est présent dans \@author. Je me demandais donc s'il était possible de forcer l'interprétation, mais je me suis rendu compte ensuite que pour forcer une marco à être interpréter il fallait mettre une macro X magique devant, mais celle ci ne serait pas interprété non plus.

    Au final, je vais me contenter de \IfSubStr en attendant de trouver une macro peut-être un peu plus appropriée à mon problème.

    a+

  9. #9
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    Bonjour,

    Il s'agit d'un problème d'expansion des commandes : dans ton cas, le \and est développé et les \ et & que xstring redoute tant font partie des chaînes comparées. D'où l'erreur.

    La difficulté dans ton cas, c'est que si tu demandes à ce que les commandes ne soit pas développées, tu vas comparer "\@author" et "\and" comme chaînes de caractères

    Cependant, le package xstring offre des moyens de contrôler plus finement l'expansion des commandes, i.e. définir une profondeur de développement.
    L'exemple suivant fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    ...
     
    \renewcommand{\and}{\\ &}
     
    \newcommand{\testa}{bla \and blabla}
     
     
    \begin{document}
     
    \StrExpand[0]{\and}{\andtmp}     % => \and
    \StrExpand[1]{\testa}{\testatmp} % => author \and author
     
    \begin{tabular}[t]{rl}
       Author\IfSubStr{\detokenize\expandafter{\testatmp}}%
                      {\detokenize\expandafter{\andtmp}}{s}{} : & \testa \\
    \end{tabular}
     
    ...
    Tu cherches donc bien la présence de "\and" et non "\\ &" dans \@author (en fait, je crois qu'avec le \detokenize, \and devient quelque chose comme "and).
    Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un
    ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !)

    Une solution vous convient ? N'oubliez pas le tag


    )><))))°>

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 168
    Points : 85
    Points
    85
    Par défaut
    parfait, c'est exactement ce à quoi je voulais arriver ... merci encore pour ton aide.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Je me permets de déterrer ce post , tant pis si on me gueule dessus par la suite

    Je voulais apporter quelques précisions sur xstring, étant l'auteur de cette extension. Tout d'abord, les macros de xstring développent par défaut les arguments contenant des chaînes (puisque \fullexpandarg est appelé par le package). C'est juste pour éviter des \expandafter partout. On peut très bien si on veut :
    • appeler \noexpandarg qui fait que les macros ne développent rien du tout
    • appeler \expandarg qui oblige les macros à développer le 1er token seulement des arguments contenant des chaînes, les autres tokens étant laissés tels quels.


    Et puis normalement, tous les tokens sont permis dans les chaînes, à part ceux de catcode 6 et 14 (c'est-à-dire # et %). Cela inclus tous les autres, notamment "&", "\\", "^", etc... Si quelqu'un trouve un dysfonctionnement avec les tokens autorisés, il s'agit d'un bug du package, et j'aimerais bien que l'on me le signale

    Bref, pour en revenir à la question posée, on peut très bien se passer de la macro \StrExpand ainsi que du bricolage avec \detokenize et \expandafter (bricolage que la macro étoilée fait toute seule d'ailleurs).

    Donc dans le code ci-dessous, j'invoque \epxandarg dans le tableau, comme ça, c'est local, et je neutralise le 1-développement de \and en mettant comme premier token \empty qui se développera en rien (c'est l'astuce qui tue , voir la doc et les exemples à la fin, je crois) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    \documentclass[12pt,a4paper]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{xstring}
    \usepackage[francais]{babel}
     
    \renewcommand{\and}{\\ &}
    \newcommand{\testa}{bla \and blabla}
     
    \begin{document}
    \begin{tabular}[t]{rl}
       \expandarg
       Author\IfSubStr{\testa}%
                      {\empty\and}{s}{} : & \testa \\
    \end{tabular}
    \end{document}
    Voilà, désolé pour ce long post.

    A+
    Christian

  12. #12
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    Bonjour Christian et binvenue sur DVP,
    Citation Envoyé par unbonpetit Voir le message
    Je me permets de déterrer ce post , tant pis si on me gueule dessus par la suite
    Ah bin non, quand même, c'est un honneur d'avoir des explications par le développeur du package.

    La recherche d'empty dans la doc m'a effectivement amené à une série d'exemples fort intéressants sur contrôle du développement des macros. Si je pouvais suggéré que ce soit davantage mis en valeur...

    Une petite question sur \empty : est ce une macro qui renvoie exactement son argument (rajoute un niveau de développement) ou bien est ce qu'elle bloque le développement des arguments quel que soit le nombre de niveaux choisis (e.g. avec \StrExpand) ?

    Encore merci pour les précisions et pour ce chouette package.
    Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un
    ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !)

    Une solution vous convient ? N'oubliez pas le tag


    )><))))°>

  13. #13
    Invité
    Invité(e)
    Par défaut
    Ben non, \empty est une macro LaTeX définie par le code suivant d'une simplicité biblique :
    cette macro a bien un développement puisque ce n'est pas une primitive TeX. Son développement est rien du tout, le vide absolu quoi : que dalle c'est-à-dire l'intérieur de {}.

    Maintenant, si je définis une macro \truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    \def\truc{\empty\bidule}
    alors le 1-développement de \truc est naturellement \empty\bidule que l'on peut vérifier avec \meaning\truc dans le code.

    Mais si je développe \empty avant de définir \truc avec des \expandafter comme ça, c'est-à-dire comme le font les macro de xstring avec \expandarg :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    \expandafter\def\expandafter\truc\expandafter{\empty\bidule}
    alors \empty a été 1-développée en rien et ce code est rigoureusement le même que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    \def\truc{\bidule}
    C'est pour ça que lorsqu'on choisit \expandarg avec xstring, on peut empêcher le 1-développement du 1er token d'un argument en mettant \empty comme 1er token et les autres ensuite : de cette façon, \empty est développée en rien, et tout se passe comme si l'argument n'avait pas été développé du tout.

    J'espère que j'ai été clair , en fait, je crois pas

    Pour la mise en valeur de trucs dans la doc, comme tu as pu t'en apercevoir, chui pas un type doué pour écrire une doc . Comme ce genre d'astuce est quand même pour les utilisateurs avancés qui savent exactement ce qu'est un développement et quelle utilité cela a de les contrôler ce qui suppose une bonne connaissance des mécanismes de TeX, je préfère ne pas l'encadrer en rose et le laisser tel quel !

    Christian

Discussions similaires

  1. excuter le programme sans rien afficher
    Par safa1990 dans le forum Caml
    Réponses: 1
    Dernier message: 27/05/2014, 19h25
  2. Réponses: 7
    Dernier message: 04/10/2012, 10h19
  3. Exécution de fonction sans ré-afficher Dialogu
    Par KillGunBlood dans le forum jQuery
    Réponses: 1
    Dernier message: 21/12/2011, 14h42
  4. programme qui semble s'exécuter sans rien afficher
    Par Arketran dans le forum Débuter
    Réponses: 8
    Dernier message: 04/01/2011, 08h13
  5. exécuter le code sans passer par form
    Par beet2che dans le forum VB.NET
    Réponses: 2
    Dernier message: 24/08/2008, 22h45

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