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

Fortran Discussion :

Formatage données fortran + LATEX


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 10
    Par défaut Formatage données fortran + LATEX
    J’aimerais comprendre le formatage des données avec FORTRAN.
    Je souhaite au final, écrire un fichier de données à partir du FORTRAN pour être ensuite traduit par le programme LATEX.
    Dans mon cas, j’ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    REAL :: val1, val2
    val1=315.00  (sachant que val1 peut prendre la valeur de 65.15 ou encore 1500.15)
    val2=253.04 
    WRITE(UNIT=10,FMT='(A,1F7.2)'),'$ M_{Ed} = \numprint[kN.m]{',val1,'}'
    WRITE(UNIT=10,FMT='(A,1F7.2)'),'\M_{lu} = \numprint[kN.m]{',val2,'}$'
    Tout se déroule bien jusqu’ici. Ensuite quand je lance LATEX il m’affiche les données de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $ M_{Ed(ELU)} = \numprint[kN.m]{ 315.00
    }
    Et..
    \M_{lu} = \numprint[kN.m]{ 253.04
    }$
    Mon problème réside dans le fait que j’obtiens des espaces et blanc. J’aimerais convertir les valeurs REAL (val1 ;val2) en string de manière à effacer les vides et blancs avant les chiffres avec la fonction ADJUSTR() .

    Comment éviter ce problème ? pourquoi j'ai ces blancs dans les accolades et le passage à la ligne..

    Je voudrais obtenir ce résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $ M_{Ed(ELU)} = \numprint[kN.m]{315.00}
    Et..
    \M_{lu} = \numprint[kN.m]{253.04}$
    Merci de vos réponses

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 152
    Par défaut
    Bonjour,

    Je pense que le problème vient de ton format : tu spécifies le format '(a,1f7.2)' mais en écrivant ton code, tu fais en réalité un format de type :
    '(a,1f7.2,a)' (tu écris un char, un réel puis un char).

    Je te suggères donc d'essayer avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    REAL :: val1, val2
    val1=315.00  (sachant que val1 peut prendre la valeur de 65.15 ou encore 1500.15)
    val2=253.04 
    WRITE(UNIT=10,FMT='(A,1F7.2,A)'),'$ M_{Ed} = \numprint[kN.m]{',val1,'}'
    WRITE(UNIT=10,FMT='(A,1F7.2,A)'),'\M_{lu} = \numprint[kN.m]{',val2,'}$'
    Normalement cela devrait résoudre le problème du passage à la ligne.

    Pour les espaces, le soucis vient directement des séparateurs (ici les virgules). Pour l'éviter, le plus simple reste d'utiliser une concaténation de chaine de caractères. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    REAL :: val1, val2
    CHAR(99) :: CNUMB
    val1=315.00  (sachant que val1 peut prendre la valeur de 65.15 ou encore 1500.15)
    val2=253.04 
     
    WRITE(CNUMB,*)val1
    WRITE(UNIT=10,*)'$ M_{Ed} = \numprint[kN.m]{'//trim(adjustl(CNUMB))//'}'
    WRITE(CNUMB,*)val2
    WRITE(UNIT=10),'\M_{lu} = \numprint[kN.m]{'//trim(adjustl(CNUMB))//'}$'
    Sauf erreur de ma part, cette syntaxe devrait renvoyer le résultat attendu.

    Pour le détail, on écrit la valeur du réel dans un caractère, que l'on concatène par la suite avec les autres caractères (instruction //). On retire également les espaces blancs à gauche et à droite de la chaine (donnés dans le trim et adjustl).

    En espérant avoir pu t'aider,

    Marlan

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 10
    Par défaut MERCI BEAUCOUP POUR TON AIDE ET TA RÉACTIVITÉ
    J'ai fais un test sur une de mes lignes de commandes.

    Grâce à tes instructions et ton exemple. Le code fonctionne parfaitement, c'est exactement ce que je voulais faire.

    Je te remercie beaucoup MARLAN pour cette aide précieuse.

    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Formatage données sous excel
    Par sympahomme dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/07/2013, 19h46
  2. Separation chaine de caracteres et donnes Fortran 77
    Par MadScientifik dans le forum Fortran
    Réponses: 2
    Dernier message: 04/07/2012, 18h18
  3. écrire une struture de données en latex avec algorithm2e.sty
    Par christianf dans le forum Mise en forme
    Réponses: 4
    Dernier message: 24/08/2010, 22h21
  4. Réponses: 3
    Dernier message: 06/02/2008, 09h51
  5. Formatage données avec sprintf
    Par El-Diablo- dans le forum C++Builder
    Réponses: 11
    Dernier message: 19/01/2008, 01h11

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