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

MATLAB Discussion :

passage à la ligne dans fonction text


Sujet :

MATLAB

  1. #1
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut passage à la ligne dans fonction text
    bonjour
    le titre n'est pas très clair mais j'aurais aimé savoir quel(s) caractère(s) mettre dans la chaîne pour faire un passage à la ligne dans la fonction text :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    text(-4.2,0,legend,...
        'HorizontalAlignment','left','EraseMode','none','edgecolor','black','linewidth',1,'parent',cam);
    legend est une concaténation verticale de différentes chaînes. j'aimerais pouvoir forcer un passage à la ligne lors de la définition d'une de ces chaînes.
    j'utilise de plus un interpréteur latex
    merci

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    LEGEND est une fonction de MATLAB => ne pas l'utiliser comme nom de variable


    Pour TEXT, rapidement sans regarder, il doit y avoir plusieurs possibilités :
    1. Utiliser un tableau de cellules
    2. Concaténer avec le retour chariot : '\n' ou 10

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    montexte={'ligne1','ligne2'}
    montexte=['ligne1',10,'ligne2']
    montexte=sprintf('%s\n%s','ligne1','ligne2')
    A tester.
    Si toutes fonctionnent, ma préférée c'est le tableau de cellules plus souple

  3. #3
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    je crois que mon problème est un chouilla plus compliqué
    je récupère des informations dans un fichier texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a=textscan(tline,'%q','delimiter','\t','commentStyle','%'); %lecture d'une ligne
    [property,value]=strtok(a{1}{idx});
     value = strtrim(value);
    ex de ligne du texte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		'weight' 1.5	'name' 'Homogeneity'	'abbr' 'HOM'	'note' -2	'sdesc' 'spectral response (smoothed FFT)'s deviation \ici from user defined reference curve'	%see guiSpectreObj\@Car\updateRefCurve
    c'est à l'emplacement du \icique j'aimerais par la suite forcer un retour à la ligne.
    par un test je vérifie que 'property' correspond bien à une propriété d'un objet de type Ind et je construis alors l'objet avec les différentes valeurs spécifiés pour les différentes propriétés.
    le principe de la classe Ind est qu'un objet de ce type contient une liste d'objets de ce type et que cela peut aller jusqu'où on veut.
    cet objets peut-ensuite être tracé via une fonction qui utilisera text pour afficher la légende
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    plegend={strvcat(['\color{red}',obj.name],['\color{black}',obj.sdesc])};
    for i=length(obj.listofSubInd):-1:1;
        plegend={plegend{:},strvcat(' ',['\color{blue}',' ',obj.listofSubInd{i}.name])};%,['\color{black}',obj.listofSubInd{i}.sdesc])};
        for j=length(obj.listofSubInd{i}.listofSubInd):-1:1
            plegend={plegend{:},strvcat(['\color[rgb]{0 0.7 0.9}',' ',obj.listofSubInd{i}.listofSubInd{j}.abbr,': ','\color{black}',obj.listofSubInd{i}.listofSubInd{j}.name],[' ',obj.listofSubInd{i}.listofSubInd{j}.sdesc,' '])};
        end
    end
    text(-4.2,0,plegend,...
        'HorizontalAlignment','left','EraseMode','none','edgecolor','black','linewidth',1,'parent',cam);
    obj est un objet de type Ind, obj.listOfSubInd la liste de tous ces sous objets., sachant que les propriétés 'name' et 'sdesc' sont des chaines de caractère.
    exemple de résultats en PJ

    edit : je me suis rendu compte que les strvcat ne servent à rien

    edit2: suppression PJ

  4. #4
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    j'ai pensé à tester et modifier en aval :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    a=textscan(tline,'%q','delimiter','\t','commentStyle','%'); %lecture d'une ligne
    [property,value]=strtok(a{1}{idx});
     value = strtrim(value);
    if strcmpi(property,'sdesc') %propriété qui pose le problème
                    %il faut vérifier la longueur de la chaîne et la traiter si
                    %trop longue pour entrer dans la légende
                    maxSlength=70;
                    if length(value)>maxSlength
                        spaces=strfind(value,' ');
                        rcharriot=spaces(find(spaces<maxSlength,1,'last'));
                        value=value(1:rcharriot-1);
                    end
                end
    je peux la couper mais ne sait pas comment la faire rentrer sur deux lignes pour que ce soit compatible avec la suite de mon code (définition de plegend)

  5. #5
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    finalement, étant donné que 'sdesc' signifie short description je vais la forcer à une longueur inférieure à 70 caractères

Discussions similaires

  1. passage de variable dans fonction
    Par nicerico dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/12/2006, 23h25
  2. ecrire a la ligne dans fichier texte.
    Par zulot dans le forum Langage
    Réponses: 7
    Dernier message: 12/09/2006, 12h02
  3. [swing] jLabel et retour à la ligne dans le texte ?
    Par daed dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 04/05/2006, 11h35
  4. [JSP]retour a la ligne dans fonction mailto
    Par logica dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 19/04/2006, 01h50
  5. pb lecture de ligne dans un texte
    Par bidoo dans le forum C++
    Réponses: 4
    Dernier message: 22/10/2005, 13h23

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