J'utilise vim (avec les greffons latex-suite et syntastic), et souhaite ajouter des macros vim personnelles de façon permanente. texlive est installé ainsi: /usr/local/texlive/texmf-local

je ne trouve pas d'information sur le meilleur endroit où placer ces fichiers de macros Vim.

Posée 13 Jul '21, 16:00

joseph-tux's gravatar image

joseph-tux
46623061
Taux d'acceptation : 3%

Modifiée 27 Aoû '21, 12:29

Ces macros vim sont-elles des macros dédiées à LaTeX ?

(14 Jul '21, 17:29) Pathe ♦♦ Pathe's gravatar image

Oui, je souhaite créer une commande \Footnote qui «formate» l'écriture d'une \footnote ainsi:

%

\footnote{%

<++>%

}

et donc une macro chargée avec un fichier *.tex

(14 Jul '21, 20:00) joseph-tux joseph-tux's gravatar image
1

Comme il s’agit d’une macro LaTeX indépendante de l’éditeur, je déconseille l’utilisation de l’arborescence .vim/ Place la macro dans celle de texlive, c’est à dire $TEXMFHOME/tex/latex/ (sur un unix, echo $TEXMFHOME devrait te donner la localisation, en général il s’agit de ~/texmf/

(25 Aoû '21, 09:29) sztruks sztruks's gravatar image

@sztruks il s'agit bien de créer une macro vim: écrire une commande \footnote{Texte} en la formattant ainsi pour faciliter la lecture:

1 un « % » suivi d'une nouvelle ligne

2 la commande « \footnote{% » (suivi d'un % et d'une nouvelle ligne)

3 le « place-holder <++> % » pour le texte de la note (avec un « % » en fin de la dernière ligne et une nouvelle ligne

4 « }% » puis une nouvelle ligne

Cette macro serait sur le modèle des macros de la suite vim-latex, soit en mode insertion (comme: SSE qui écrit \section{<++>}, soit en mode sélection (le contenu de la note, comme « `em «)

(27 Aoû '21, 12:25) joseph-tux joseph-tux's gravatar image

Je ne connais pas les macros vim-latex --- et j’interprête peut-être mal la question --- mais j’utilise les abbréviations pour obtenir ce genre de résultat (sans place holder mais avec le curseur au bon endroit une fois l’abbréviation tapée): Voici un exemple adapté de mon fichier de config tex.vim. En mode insertion, fn<espace> donnera le résultat demandé --- je ne le mets pas en page comme code, car les signes < sont alors interprêtés, à l’encontre de ce que j’ai pu lire dans l’aide:

iabbrev <buffer> fn %<CR>footnote{%<CR>}%<Esc>O

Un (trop?) rapide coup d’œil dans le manuel de vim-latex suggère que l’extension utilise lui aussi le fichier $VIM/ftplugin/tex.vim. Pour ce qui est du contenu de la note, je ne pratique pas vim-latex donc je ne vois pas tout à fait ce qui est demandé. Pour sélectionner le contenu d’un environnement, je fais yi{, mais il y a le problème du % placé après la parenthèse et qui serait sélectionné.

Lien permanent

Publiée 28 Aoû '21, 16:36

sztruks's gravatar image

sztruks
3681413
Taux d'acceptation : 25%

Modifiée 28 Aoû '21, 17:32

@Sztruks merci pour cet éclairage utile.

La macro suivante placée dans ce fichier: ~/.vim/tex.vim

fonctionne:

imap FTN footnote{%<ESC>o%<ESC>o}<ESC>o<++><ESC>2kI

semble efficace. Elle utilise la syntaxe standard de vim et non celle de la suite vim-latex (ce qui impose le 2kI final, au lieu d'un «placeholder» sur le 2e ligne)

En revanche je n'ai pas encore trouvé comment on intègre la sélection visuelle comme contenu de la note avec vmap. Cette commande permettrait de transformer le passage sélectionné en note.

(29 Aoû '21, 10:40) joseph-tux joseph-tux's gravatar image

Dans un esprit vimgolf, je conseille tout de même <CR> — tape entrée en mode insertion — plutôt qu’<ESC>O qui fait la même chose, mais en deux commandes

(29 Aoû '21, 11:26) sztruks sztruks's gravatar image
1

encore merci Sztruks. Je devrais bien me (re)mettre à cet apprentissage des mappages.

C'est mieux qu'esthétique: ça corrige un bug, en cas d'insertion d'une note au milieu d'un texte existant (avec <ESC>o», la suite du texte était laissée derrière le «%», contrairement à <CR>)

Reste à supprimer l'indentation automatique (à quoi sert de mettre «%» à la fin du mot, si c'est pour remettre une espace avant «\footnote{» ?)

(29 Aoû '21, 11:30) joseph-tux joseph-tux's gravatar image

Pour corriger ce problème d’espace, j’ai affecté l’insertion de la note à la touche tant en mode insertion que normal. Voici ce qu’il y a dans mon tex.vim POUR UNE UTILISATION BÉPO

imap <buffer> <F4> % <Esc>Do<Esc>POfootnote{}<Esc>bd0f{a

nmap a% <Esc>Do<Esc>POfootnote{}<Esc>bd0f{a

En azerty, il faut remplacer les "D" par "I", "d" par "i" (je ne garantis pas ne pas avoir touché au b par rapport au défaut)

Ceci dit, l’indentation automatique est peut-être du ressort de vim-latex…

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

ma solution actuelle pour le mode insertion: imap FTN %CR><ESC>V<.....I\footnote{%<CR>%<CR>}<CR><++>2kI

l'esprit vimgolf n'y est pas mais ça fait le travail.

Pour le mode sélection visuelle, je cherche.

(01 Sep '21, 17:43) joseph-tux joseph-tux's gravatar image

vmap ferait-il l’affaire?

(05 Sep '21, 11:02) sztruks sztruks's gravatar image
Affichage de 5 parmi 6 Afficher 1 commentaire(s) en plus
Votre réponse
(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.