La question concerne vim, et non directement LaTeX: comment intégrer dans une macrocommande une séquence qui supprime une indentation, reconduite automatiquement par un retour à la ligne.

Suite à ma question précédente «Où mettre les macrocommandes de vim», j'ai fini par trouver ici ($VIM/ftplugin/tex.vim) et réalisé la macro souhaitée. Cette page montre l'intérêt et explique comment réaliser une macro plus pratique avec la syntaxe «IMAP('raccourci', "développé avec <+place holder+>", 'type')

Malheureusement, je ne parviens pas à reproduire parfaitement la macro standard de vim (avec imap) qui est parfaite, avec la syntaxe IMAP() de la suite vim-latex.

Cette macro prépare l'écriture d'une footnote en l'isolant de sa ligne d'appel: La macro standard et qui fonctionne bien est la suivante:

imap FTN %<CR><ESC>V<.....I\footnote{%<CR>%<CR>}<CR><++><ESC>2kI

Elle est un peu bricolée: la séquence « V<..... » sélectionne la ligne pour supprimer son indentation par la commande « < », répétée par chaque point.

la séquence « 2kI » renvoie à la ligne qui suit l'appel de note. Le système des place holder de vim-latex est un réel avantage, plus sur et plus confortable (visible).

En revanche, je ne trouve pas le moyen d'appliquer cette fonction avec la forme trouvée avec la syntaxe IMAP:

:call IMAP('ftn', "%\< CR>\< ESC>I\\footnote{%\< CR><++>%\< CR>}\< CR><++>\ <ESC> <++>", 'tex')

Cette fonction manquante devrait se trouver juste avant la commande « I », qui ouvre en écriture au début du texte écrit sur la ligne (après les espaces de tabulation) et non au début absolu de la ligne comme je le croyais. (Les blancs qui suivent la séquence «< » ne sont pas dans la macro, ajoutés pour que le code soit correctement affiché ici)

alt text

Les lignes 8 à 12 montrent le résultat souhaité, réalisé par la commande standard imap

Les lignes 2 à 6 montrent le résultat insatisfaisant, réalisé par la commande IMAP().

Posée 25 Oct, 14:51

joseph-tux's gravatar image

joseph-tux
1.1k626
Taux d'acceptation : 4%

La macro idéale devrait, en plus, rétablir le niveau de tabulation à la sortie de la note.

(25 Oct, 14:54) joseph-tux joseph-tux's gravatar image
1

La réponse existe: il suffit de remplacer le premier carriage return: \< CR>

par un new line: \< NL>

(25 Oct, 15:23) joseph-tux joseph-tux's gravatar image

La macro qui marche:

:call IMAP('ftn', "%\< NL>\< ESC>I\\footnote{%\< NL><++>%\< CR>}\< CR><++>", 'tex')
Lien permanent

Publiée 25 Oct, 15:30

joseph-tux's gravatar image

joseph-tux
1.1k626
Taux d'acceptation : 4%

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.

Mots-clés de la question :

×3
×3

Question posée : 25 Oct, 14:51

Question vue : 197 fois

Dernière mise à jour : 25 Oct, 15:33