Professor, tablor et emacs

Comme dans les autres éditeurs, le principe est d’utiliser les extraits de code.

Emacs et yasnippet


Sous les conseils de Philippe Ivaldi, c’est actuellement la solution recommandée : yasnippet

Emacs, tempo et LaTex


Principe

tempo permet de définir des raccourcis et une touche magique pour faciliter la complétion.

La doc sur tempo est ici :

manuel tempo

Attention : c’est un fichier au format texi. Il faut l’ouvrir dans emacs puis taper :

M-x makeinfo-buffer

La config vient de :

Philippe Ivaldi

Dans .emacs

Il faut commencer par écrire quelques lignes dans son .emacs :

(add-hook 'LaTeX-mode-hook
'(lambda ()
(load "~/emacs/latex-tempo")))

(setq-default abbrev-mode t) ;; enable abbreviations
;; save abbreviations upon exiting emacs whithout confirmation

(global-set-key (kbd "M-SPC") 'expand-abbrev)

 (add-hook 'LaTeX-mode-hook
   (function
    (lambda ()
     (define-key LaTeX-mode-map [(super right)] 'tempo-forward-mark)
     (define-key LaTeX-mode-map [(super left)]  'tempo-backward-mark)
     (define-key LaTeX-mode-map [f3] 'tempo-complete-tag))))


 (setq save-abbrevs 'silently)
 (setq abbrev-file-name (expand-file-name "pi-tempo-abbrev"))
 (if (file-readable-p abbrev-file-name) ;; read the abbreviations every
     (read-abbrev-file abbrev-file-name)) ;; time emacs is started
;; ;; Combine tempo et abbrev

 (setq-default tempo-insert-region nil)

Ensuite, il faut créer quelques fichiers.

pi-tempo-abbrev.el

Placer ce fichier dans son répertoire emacs local.

pi-tempo-abbrev.el

latex-tempo.el

C’est ici que vous placez vos raccourcis personnels. Voici mon fichier par exemple :

latex-tempo.el

Comment ça marche ?


Les environnements simples

Ici, du classique qu’on retrouve ailleurs.
On entre ceci dans latex-tempo :

("enu" "enumerate" ((LaTeX-env-item "enumerate")))

et quand on tape “enu” puis F3, on obtient :

\begin{enumerate}
\item
\end{enumerate}

Les commandes simples

Par exemple, avec ceci dans latex-tempo :

("lin" ("\\displaystyle\\lim_{n\\to +\\infty}") )

quand vous tapez “lin” vous obtenez de quoi écrire la limite d’une suite :

\displaystyle\lim_{n\to +\infty}

Vous aurez remarqué que pour afficher une contre-oblique \ il faut en taper deux dans tempo car c’est un caractère protégé.

Vous pouvez entrer des commandes plus longues (aussi longues que vous voulez). Par exemple, voici un code pour obtenir un préambule pour mes textes au format paysage en multicolonnage :

("pays"("\\documentclass[10pt,landscape]{report}
\\usepackage[height=170mm,width=265mm,left=1.5cm]{geometry}
\\usepackage{preambule-utf8}
%\\usepackage[upright]{fourier}
\\usepackage[boldsans]{ccfonts}
\\usepackage{beton,euler}
\\graphicspath{{/home/moi/Figures/}}
\\entete{\\large \\bfseries"p"}{\\normalsize\\textsf{\\rightmark}}{Lycée Jean \\textsc{Perrin} - "p"}%g,d,b
\\begin{document}
\\setlength{\\parindent}{0pt}
\\thispagestyle{empty}

\\begin{multicols}{2}

"p"

\\end{multicols}
\\end{document}"))

Il me suffit alors de taper “pays” puis F3 et le tour est joué…
Le “p” indique la place du curseur après affichage du tag.

Si on en place plusieurs, on passe d’un “p” à l’autre à l’aide de “S-right” ou “S-left” selon les cas (voir lignes ajoutées dans .emacs).
Le symbole S représente la touche “super”, c’est-à-dire l’icône windows. Il faudra adapter pour mac.

Interaction avec le minibuffer

Quand il y a de nombreux champs à remplir et qu’il est difficile de se souvenir de leur ordre (c’est le cas des environnements tablor et professor !), on s’aide du minibuffer (merci à Phil Pham pour les tuyaux).

("TV" (& > "\\begin{center}"n>
         "\\begin{TV}" n>
"TV(["(p "debut de l'intervalle:")","(p "fin de l'intervalle:")"],"
         "["(p "liste de valeurs interdites (,) :")"],"
         "\""(p "nom de la fonction :")"\","
         "\""(p "nom de la variable :")"\","
         ""(p "expression de la fonction (utiliser x) :")","
""(p "type de tableau (1:complet, 0:sans signe, 2:que le signe) :")","
""(p "trigo ? (t:oui, n:non) :")","
         "\\tv)" n>
           "\\end{TV}" n>
           "\\end{center}" > % ))

On tape “TV” puis F3. Dans le buffer s’affiche

\begin{center}
\begin{TV}
TV([(

et dans le minibuffer on me pose une question :

debut de l'intervalle:

Je tape “-infinity” par exemple. Alors l’affichage dans le buffer progresse et une nouvelle question dans le minibuffer apparaît.

Les caractères importants sont :
– “n>” pour passer à la ligne ;
– “p” pour placer le texte enregistré dans le minibuffer ;
– ne pas oublier que \ et ” sont protégés, dont il faut les précéder d’une \ pour les afficher.
le minibuffer