utiliser "align"

3 réponses
Avatar
Stéphane Dutailly
Bonjour à tous,

J'essaie d'écrire une petite fonction afin d'utiliser la commande align
lorsque je fais un tableau en LateX. Voici ce que j'ai écrit:

;; Alignement dans un tableau
(defun alignement-tableau ()
(save-excursion
(LaTeX-mark-environment)
(align)))

Lorsque j'utilise cette fonction, le mini-buffer m'affiche:
wrong type argument: commandp, alignement-tableau

J'ai regardé du côté de la fonction align; je sais donc qu'elle prend
deux arguments (le début et la fin de la région à aligner) mais je ne
sais pas comment récupérer le début et la fin de l'environnement
sélectionné (j'ai essayé de mettre (align nil nil) mais ça ne va pas).
Quelqu'un aurait-il une solution?
Merci d'avance.

Stéphane

PS: à la main, dans un document .tex avec AucTex, je fais lorsque je
suis dans mon tableau:
C-c .
M-x align

qui aligne bien sur les &, mais qui a le défaut de ne pas remettre le
curseur à l'endroit où je me trouvais...

3 réponses

Avatar
Stéphane Dutailly
J'ai essayé aussi cette approche là:

(defun alignement-tableau-bis (debut fin)
(save-excursion
(LaTeX-find-matching-begin)
(setq debut point)
(LaTeX-find-matching-end)
(setq fin point)
(align debut fin)))

mais j'obtiens le même message d'erreur...
Avatar
Alain Ketterlin
Stéphane Dutailly writes:

;; Alignement dans un tableau
(defun alignement-tableau ()
(save-excursion
(LaTeX-mark-environment)
(align)))

Lorsque j'utilise cette fonction, le mini-buffer m'affiche:
wrong type argument: commandp, alignement-tableau



Que signifie "j'utilise" ici ? Comment essaies-tu d'appeler cette
fonction ?

Si tu veux l'appeler avec M-x il manque un appel à interactive au dà ©but.

J'ai regardé du côté de la fonction align; je sais donc qu 'elle prend
deux arguments (le début et la fin de la région à aligner) mais je ne
sais pas comment récupérer le début et la fin de l'environ nement
sélectionné



(mark) et (point), ou (region-beginning) et (region-end)

-- Alain.
Avatar
Stéphane Dutailly
Que signifie "j'utilise" ici ? Comment essaies-tu d'appeler cette
fonction ?


en fait, j'ai mis dans mon LaTeX-mode-hook:
(local-set-key [C-f10] 'alignement-tableau)

Si tu veux l'appeler avec M-x il manque un appel à interactive au début.



Je pense que le problème venait de là du coup.

(mark) et (point), ou (region-beginning) et (region-end)



Au final, j'ai mis ceci:

;; Alignement dans un tableau
(defun alignement-tableau ()
(interactive)
(save-excursion
(LaTeX-mark-environment)
(align (region-beginning) (region-end))))


et cela fonctionne très bien; merci beaucoup Alain.

Stéphane

PS: plus généralement, je me demandais s'il y aurait une extension qui
permettrait de faire ceci de façon dynamique. Et même, en poussant le
bouchon, savez-vous s'il existe une extension qui permettrait de faire
les tableaux dans un fichier tex à la manière dont on peut faire les
tableaux avec org? (les cellules s'ajustent automatiquement, on peut
rajouter des colonnes à la volée...)