Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/08/2018, à 01:48

tchado

Trouver les SIGLES et avoir un index de mots

Bonjour,
Mon amie fait une thèse avec Latex : saisie sous sublime Text et formatage avec Texstudio

Je me demande comment il est possible de lui faire ces 2 formules :
1 - (je cherche les sigles qui sont tous en majuscules)
soit tous les mots de 2 caractères ou plus dont au minimum les 2 1ers caractères sont en majuscule (ça corrigera aussi les fautes de frappe)

2- (pour faire un index)
tous les mots ayant moins de 10 occurences et de 5 caractères ou plus
Pouvez vous m'aider ?

Hors ligne

#2 Le 25/08/2018, à 09:13

nam1962

Re : Trouver les SIGLES et avoir un index de mots

Ici tu trouveras des avis et des conseils, mais pas des exercices ou devoirs tous faits.

Alors : au boulot !

Si tes scripts ont des soucis ou sont trop longs, tu pourras les montrer ensuite.


[ Modéré ]

Hors ligne

#3 Le 25/08/2018, à 10:25

tchado

Re : Trouver les SIGLES et avoir un index de mots

Justement vers quoi m'orienter ?
Au début je voulais essayer avec grep mais je ne sais pas si c'est la bonne solution cela semble plus orienté phrases ou fichiers que mots.

Hors ligne

#4 Le 25/08/2018, à 10:29

nam1962

Re : Trouver les SIGLES et avoir un index de mots


[ Modéré ]

Hors ligne

#5 Le 25/08/2018, à 11:18

melixgaro

Re : Trouver les SIGLES et avoir un index de mots

salut,

Désolé pour la mauvaise nouvelle : ton amie s'y prend mal. Tout l'intérêt de LaTeX est de le laisser s'occuper de ce genre de choses pour ce concentrer sur le fond. Un index, ça se prépare avec le module makeidx (voir ici en anglais) et une liste d'acronyme avec par exemple le module glossaries (voir ici en anglais). La mauvaise nouvelle est qu'il fallait y penser dès le départ pour, par exemple, taper dans le source \index{mot important} au lien de simplement 'mot important'. Après compilation, un index sera créé listant 'mot important' et la page où il apparaît. Ça n'est peut-être pas trop tard pour bien faire même si ça sera un peu fastidieux…

Ou alors j'ai rien compris à ton besoin et alors je t'invite à reformuler…


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#6 Le 25/08/2018, à 14:31

tchado

Re : Trouver les SIGLES et avoir un index de mots

Yep,

Non tu as tout à fait compris, elle sait qu'elle s'y est mal pris....
Du coup me voilà posant cette question, je pensais qu'un grep pouvait suffire, il y a toutes les options, mais au lieu des phrases je veux les mots.

Hors ligne

#7 Le 25/08/2018, à 14:42

pingouinux

Re : Trouver les SIGLES et avoir un index de mots

Bonjour,

tchado #1 a écrit :

1 - (je cherche les sigles qui sont tous en majuscules)
soit tous les mots de 2 caractères ou plus dont au minimum les 2 1ers caractères sont en majuscule

Essaye ceci

grep -Eo '[A-Z]{2}[A-Za-z]*' fichier

Hors ligne

#8 Le 25/08/2018, à 14:46

melixgaro

Re : Trouver les SIGLES et avoir un index de mots

Pour l'index, il faut pour chaque mot indexé le numéro des pages où il apparaît. Or, le numéro des pages n'est connu qu'à l'issue de la compilation. J'ai du mal à comprendre comment un grep va aider ici (à part si c'est pour remplacer tous les 'mot important' par '\index{mot imporant}').

Pour les acronymes, une simple liste peut être suffisante (pas forcément besoin d'un numéro de pages). Donc ton amie peut peut-être la construire de tête à la main. Après tout c'est l'autrice du manuscrit, elle doit savoir les acronymes qu'elle a employés wink


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#9 Le 29/08/2018, à 13:43

tchado

Re : Trouver les SIGLES et avoir un index de mots

Bonjour,
désolé pour cette réponse tardive. En tout cas merci pour vos réponses elles m'ont bien aidé.
Du coup j'en suis là :
1 - OK big_smile:D
Comment faire pour les acronymes :
- récupération des mots en majuscule et creation fichier texte :
Taper dans la console grep -Eo '[A-Z]{2}[A-Za-z]*' fichier > iso
- tri et élimination des doublons : cat iso | sort | uniq > isoacro
Il ne lui reste qu'à effacer quelques mots (genre les chiffres romains) et elle a sa liste. Merci pingouinux !

2 -
Je nage ... je pensais faire une liste de mots = tous les mots de 5 caractères ou plus avec moins de 10 occurrences mais ça me semble trop vague.
Et je ne sais pas s'il un moyen de faire avec une liste de mots un rechercher/remplacer, comme l'indique au-dessus melixgaro 'mot recherché' par '\index{mot recherché}'
Je sens que ça va se terminer à la mimine ce truc

Hors ligne

#10 Le 29/08/2018, à 13:56

MicP

Re : Trouver les SIGLES et avoir un index de mots

Bonjour

Peut-être simplement en utilisant les fonctionnalités Search&Replace (avec ou sans RegexP PCRE) de SublimeText

Hors ligne

#11 Le 29/08/2018, à 14:06

pingouinux

Re : Trouver les SIGLES et avoir un index de mots

tchado #9 a écrit :

- tri et élimination des doublons : cat iso | sort | uniq > isoacro

je pensais faire une liste de mots = tous les mots de 5 caractères ou plus avec moins de 10 occurrences

  1. Tu peux avantageusement remplacer cette commande par

    sort -u iso >isoacro
  2. Tu peux essayer ceci (c'est du python3 :

    $ cat liste_index.py 
    #!/usr/bin/python3
    import sys, re
    
    fic=sys.argv[1]
    with open(fic,'r') as f: mots=re.findall(r'\b[A-Za-z]{5,}\b',f.read())
    
    dico={}
    for mot in mots:
       MOT=mot.upper()
       if MOT not in dico: dico[MOT]=0
       dico[MOT]+=1
    
    for idx in filter(lambda x:x[1]<10,sorted(dico.items())): print("%-20s %3d"%idx)

    à appeler ainsi

    ./liste_index.py  fichier

Hors ligne

#12 Le 29/08/2018, à 18:48

melixgaro

Re : Trouver les SIGLES et avoir un index de mots

comme il s'agit de tex, je pense qu'il vaut mieux démarrer avec detex pour nettoyer le + possible le texte des instructions LaTeX. Voilà ce que je propose

pour les acronymes,

detex file.tex | grep -oE "[A-Z]{2,}[[:alpha:]]*" | sort | uniq -c | sort -k1n

pour les mots,

detex file.tex | grep -oE "[[:alpha:]]+" | sort | uniq -c | sort -k1n | awk '{if (length($2) >= 5) {print $0}}'

Dans les deux cas, ça dresse une liste avec en première colonne le nombre d'occurrences et en deuxième colone le mot/acronyme. La liste est classé du plus fréquent au moins fréquent.
Pour faire un index proprement, ton amie peut utiliser une des commandes donnée ici pour faire une liste des mots brutes puis elle la nettoie à la main et ensuite, on pourrait trouver une solution pour faire un remplacement de 'mot' par \index{mot}. Dans tous les cas, il faudra travailler sur une copie de son travail (qui est par ailleurs sauvegardé en de multiples endroits, n'est-ce pas ?).

PS : si tu veux les mots d'au moins 4 lettres, changent >= 5 par >= 4 etc


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#13 Le 31/08/2018, à 18:10

tchado

Re : Trouver les SIGLES et avoir un index de mots

hello,
merci encore. @MicP @pingouinux @melixgaro
Je suis un peu long à répondre car j'essaie de comprendre ... ce qui n'est pas vraiment évident wink

Pour ce qui est des sauvegardes, elle est au point. Je fais les tests sur un fichier différent qui est sur un autre DD.
Je vais y avoir accès ce week end.
Je ne connaissais pas la commande detex et le travail à la main est de toute façon prévu.
Comme elle en est au peaufinage et que c'est moi le coupable pour Latex, 500 pages et quelques années plus tôt, j'essaie de lui faire gagner un max de temps et de stress en moins.
Bon week end

Hors ligne