#1 Le 25/08/2018, à 00: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, à 08: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, à 09: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, à 09:29
- nam1962
Hors ligne
#5 Le 25/08/2018, à 10: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, à 13: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, à 13:42
- pingouinux
Re : Trouver les SIGLES et avoir un index de mots
Bonjour,
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, à 13: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
Linux depuis ~2007. Xubuntu seulement.
Hors ligne
#9 Le 29/08/2018, à 12: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 :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, à 12: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, à 13:06
- pingouinux
Re : Trouver les SIGLES et avoir un index de mots
- 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
Tu peux avantageusement remplacer cette commande par
sort -u iso >isoacro
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, à 17: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, à 17: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
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