Problème d'accents...
Réponses
-
Bonsoir,
Il est probable que le document .tex soit codé en ISO 8859-1, ISO 8859-15 ou MacRoman, et non en UTF-8. Le plus raisonnable est de coder tous ses documents TeX (et texte) en UTF-8. À l'époque de la Grande Migration, j'avais fait une conversion semi-automatisée de tous mes fichiers texte (pas seulement TeX) avec un petit script Python. Je n'ai jamais regretté.
Si tu as Emacs, ouvre le fichier .tex avec et regarde en bas à gauche dans la “mode line” : un U indique UTF-8, un 1 ISO 8859-1, etc (voir capture ci-dessous). La commande 'file' semble aussi détecter le codage des fichiers texte (dans la mesure du possible).
Pour ta commande, avec Zsh, on peut faire 'grep -r difficulté **/*.tex' — c'est plus vite tapé. -
Bonsoir Brian,
Un grand merci pour ta réponse.
Oui, tu as raison (et je le savais !) mes fichiers sont encodés en 1 ISO 8859-1.
Pour l'instant, je souhaite rester avec cet encodage.
Car j'échange avec plusieurs collègues qui sont restés avec cet encodage.
Tu m'as l'air très au point sur l'utilisation du Terminal (merci pour la commande courte !).
As-tu une idée pour qu'il puisse "lire" du ISO 8859-1 ?
Merci encore pour ton aide. -
Pour l'instant, je souhaite rester avec cet encodage.
Car j'échange avec plusieurs collègues qui sont restés avec cet encodage.
Tu peux regarder ici comment convertir les encodages https://stackoverflow.com/questions/4544669/batch-convert-latin-1-files-to-utf-8-using-iconvhttps://stackoverflow.com/questions/4544669/batch-convert-latin-1-files-to-utf-8-using-iconv (réponse https://stackoverflow.com/a/4544843) -
@Clairon
Je n'utilise pas macOS, mais les terminaux POSIX sont un truc assez standard. ll y a ici deux problèmes à ne pas confondre :
- ce que grep va chercher (il ne fait que “matcher” des suites d'octets ; il faut donc impérativement que le codage utilisé dans la commande soit le même que dans les fichiers examinés) ;
- comment ça va être affiché par le terminal.
À condition de chercher dans un ensemble de fichiers qui sont tous dans le même codage, on peut résoudre les deux d'un coup en lançant le terminal avec une locale adaptée au codage, par exemple pour ISO 8859-1 :LANG=fr_FR xterm
ouLANG=fr_FR.ISO-8859-1 xterm
Il faut bien sûr remplacer 'xterm' par le nom de l'exécutable permettant de lancer le terminal souhaité. Il faut aussi que la locale en question ait été générée sur le système (je sais comment faire sous Debian mais pas sous macOS).
Edit : je plussoie marsup. :-P -
Merci pour vos réponses.
Brian, je teste cela demain.
Merci -
Tu as bien raison de te préparer psychologiquement :Lao Tseu ? a écrit:Celui qui pense que les choses sont faciles rencontre bien vite des difficultés. Le sage pense que tout est difficile, et ne rencontre aucune difficulté.
-
On peut le faire convertir à la volée. Voici la version la plus sommaire.
iconv -f latin1 -t utf8 toto.tex | grep difficulté
On peut remplacer toto.tex par **/*.tex mais on perd l'affichage du nom du fichier. Je ne sais pas écrire une commande en ligne. Voici un script bricolage qui semble marcher (je ne l'ai pas poussé dans ses retranchements, loin s'en faut).#! /bin/bash for file in `ls **/*.tex`; do string="`iconv -f latin1 -t utf8 $file | grep $1`"; if [[ -n $string ]]; then echo $file; echo $string; echo; fi done
À supposer que tu aies appelé ce fichier grepe.sh et que tu lui aies donné les droits d'exécution (chmod +x grepe.sh), pour trouver "difficulté" dans les sous-répertoires du répertoire courant, voici la commande../grepe.sh difficulté
Disclaimer: sans garantie du gouvernement ! -
@Math Coss
A priori (en tout cas dans ma config.), pour Bash, le motif ** semble être équivalent à *, donc je crois que ton script ne cherche que dans les sous-dossiers de niveau 1. On peut s'en sortir de différentes façons avec find. Par exemple, on peut lancer un mini-script un peu comme le tien avec l'option -exec de find (avec la terminaison '+' de -exec, le script sera amené à traiter plein de fichiers d'un coup pour gagner en efficacité). Il est aussi possible d'écrire des choses comme :find ... | while read f; do ... avec $f ... done
mais c'est un petit peu moins robuste (ça marche mal si un nom de fichier a le mauvais goût de contenir des sauts de ligne).
Autrement : os.walk() et module subprocess de Python pour lancer 'grep'. -
Je prends note avec intérêt du pipe contenant "while read f". Pour **/*.tex, on doit pouvoir remplacer par "ls -R */*.tex" – peut-être.
-
Bonsoir Clairon
Avec find, si tu veux connaître le nom des fichiers, tu continues après le \; avec -print
Si en plus tu veux les numéro de ligne, alors immédiatement après grep tu mets -n et si tu veux faire abstraction des maj/min-uscules tu mets -i.
% find . -name "*.tex" -exec grep -ni difficulté {} \; -print
Alain -
Merci pour tous vos conseils.
J'ai appris des choses !
Figurez-vous que la réponse était plus simple que prévue (j'ai presque honte de ne pas y avoir pensé avant...). -
Tiens, c'est amusant, j'ai la même option et je ne le savais pas...
Connectez-vous ou Inscrivez-vous pour répondre.
Bonjour!
Catégories
- 165.1K Toutes les catégories
- 60 Collège/Lycée
- 22.1K Algèbre
- 37.5K Analyse
- 6.3K Arithmétique
- 58 Catégories et structures
- 1.1K Combinatoire et Graphes
- 13 Sciences des données
- 5.1K Concours et Examens
- 20 CultureMath
- 51 Enseignement à distance
- 2.9K Fondements et Logique
- 10.7K Géométrie
- 83 Géométrie différentielle
- 1.1K Histoire des Mathématiques
- 79 Informatique théorique
- 3.9K LaTeX
- 39K Les-mathématiques
- 3.5K Livres, articles, revues, (...)
- 2.7K Logiciels pour les mathématiques
- 24 Mathématiques et finance
- 337 Mathématiques et Physique
- 5K Mathématiques et Société
- 3.3K Pédagogie, enseignement, orientation
- 10.1K Probabilités, théorie de la mesure
- 801 Shtam
- 4.2K Statistiques
- 3.8K Topologie
- 1.4K Vie du Forum et de ses membres