À la suite d'une question précédente, pas tout à fait LaTeX mais tout de même... Voici une expression rationnelle qui remplace alternativement les paires de guillemets de machine à écrire ("...") en vrais guillemets de typographie française («...»), 1er ouvrant, 2e fermant etc.

Avec vim: :[range]s/"\([^"]*\)"/«\1»/g


[range] avec vim c'est

Rien = : s'applique sur la ligne active,

:% = sur tout le fichier,

:x,y = sur les lignes N° x à y,

:<,'> = sur les lignes préalablement sélectionnées en mode normal,

:g/<regex>/ = sur les lignes contenant <regex>.

Le g final (/g) répète la substitution, sinon elle ne s'applique que sur la première paire de ".

Posée 22 Aoû '20, 16:45

joseph-tux's gravatar image

joseph-tux
42722552
Taux d'acceptation : 4%

Modifiée 22 Aoû '20, 17:45

Pathe's gravatar image

Pathe ♦♦
7.5k29197245

@joseph-tux. La même manipulation m'intéresserait pour Emacs : si quelqu'un la connaît, cela me rendrait service

(22 Aoû '20, 16:56) fred02840 fred02840's gravatar image
1

En mode interactif : M-x query-replace-regexp \"\([^"]+\)\" RET «\1» RET. (M-x query-replace-regexp = C-M-%). On peut préférer \\og{} et \\fg{} à '«' et '»' pour la substitution.

(22 Aoû '20, 17:28) Jean-jacques Rétorré Jean-jacques%20R%C3%A9torr%C3%A9's gravatar image

Notons que les guillemets ouvrant et fermant placés sur des lignes différentes ne seront pas remplacés. Cela arrive fréquemment si l’on n’a pas activé les lignes visuelles… Pour éviter ces cas de figure sur vim, j’ai recours aux raccourcis pour taper directement des guillemets:

iabbrev gf «»

J’ai aussi adapté un truc et astuces pour saisir les expressions entre guillemets français vnoremap ag :silent! normal! F«vf» onoremap ag :normal vag

Sinon, le bépo permet de taper directement les guillemets…

(22 Aoû '20, 21:29) sztruks sztruks's gravatar image

La solution Emacs marche que les guillemets ouvrants et fermants soient sur la même ligne ou non.

(22 Aoû '20, 22:52) Jean-jacques Rétorré Jean-jacques%20R%C3%A9torr%C3%A9's gravatar image

@sztruks

Pour ma part, j'entre directement au clavier les « guillemets français »:

« = AltGr+w et » = AltGr+x

Le clavier s'appelle: «Français Français (variante)» dans la rubrique «agencement» (Système→clavier→Onglet Agencement) et le modèle: «PC générique 105 touches (intl)»


En plus les guillemets "machine" sont directement remplacés, avec les 2 lignes suivantes du .vimrc, (Ctrl-v " pour imprimer «"»):

let g:Tex_SmartQuoteOpen="«"

let g:Tex_SmartQuoteClose="»"

J'ai renoncé à \og et \fg qui posaient des problèmes, peut-être avec une ancienne version de french / babel?

(23 Aoû '20, 01:22) joseph-tux joseph-tux's gravatar image

@sztruks bien vu.

Cette regex (incomplète) peut aussi servir en d'autres circonstances, (comme avec les raccourcis verb de l'extension shortvrb, par exemple).

(23 Aoû '20, 04:17) joseph-tux joseph-tux's gravatar image
Affichage de 5 parmi 6 Afficher 1 commentaire(s) en plus
Soyez le premier à répondre à cette question !
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.