OVH Cloud OVH Cloud

Question d'un grand débutant

9 réponses
Avatar
Valère Bonnet
Bonsoir =E0 tous,

J'ai l'habitude d'utiliser winedt pour taper mon code latex sous
windows. J'aimerais utiliser emacs sous linux.
Sous Winedt j'ai cr=E9=E9 beaucoup de raccourcis clavier pour simplifier
la saisie.
Par exemple, sous winedt, lorsque je frappe: =9Cf
(=9C est la touche en-dessous de ESC sur mon clavier et donc facile
d'acc=E8s)
Le "=9Cf" est effac=E9 et remplacer par"\frac{}" avec le curseur entre
les accolades.
J'ai voulu faire la m=EAme chose sous emacs et jai entr=E9 le code
suivant dans .emacs

(require 'tex-site)
(fset 'frac
[?\\ ?f ?r ?a ?c ?{ ?{ left])
(define-key tex-default-mode-map [=9Cf] 'frac)


Lorsque j'ouvre un fichier LaTeX, la macro frac est reconnue, mais la
s=E9quence =9Cf ne l'est pas.
Une telle d=E9marche est-elle possible avec emacs ?
si oui, comment ?

Est-il possible de configurer emacs pour que lorsqu'on ouvre une
parenth=E8se il la ferme imm=E9diatement et place le curseur entre les
deux parenth=E8ses.

Merci

9 réponses

Avatar
drkm
"Valère Bonnet" writes:

(define-key tex-default-mode-map [œf] 'frac)



Essaye de remplacer [234f] par (kbd "352 f") ou [234 ?f].

C'est quoi cette touche ?

--drkm
Avatar
Jacques L'helgoualc'h
Le 29-05-2005, Valère Bonnet a écrit :
Bonsoir à tous,



bonjour,

J'ai l'habitude d'utiliser winedt pour taper mon code latex sous
windows. J'aimerais utiliser emacs sous linux.
Sous Winedt j'ai créé beaucoup de raccourcis clavier pour simplifier
la saisie.
Par exemple, sous winedt, lorsque je frappe: œf
(œ est la touche en-dessous de ESC sur mon clavier et donc facile
d'accès)



Je suppose qu'il pourrait s'agir du petit 2, ² du clavier 105 touches ?
Mais dans mon Emacs (latin-1), je vois un rectangle creux, et C-u C-x sur celui-ci me donne

character: œ (0234, 156, 0x9c)
charset: eight-bit-control (8-bit control code (0x80..0x9F))
code point: 156
syntax: whitespace
category:
buffer code: 0x9C
file code: 0x9C (encoded by coding system raw-text-unix)

Comme ce n'est pas un caractère ascii, j'ai des complications pour
l'utiliser comme raccourci.

Le "œf" est effacé et remplacer par"frac{}" avec le curseur entre
les accolades.
J'ai voulu faire la même chose sous emacs et jai entré le code
suivant dans .emacs

(require 'tex-site)
(fset 'frac
[? ?f ?r ?a ?c ?{ ?{ left])
(define-key tex-default-mode-map [œf] 'frac)



Pour faire du LaTeX, j'utilise AUCTeX(*), qui propose de nombreux
raccourcis utiles --- les raccourcis utilisateurs doivent utiliser de
préférence un « C-c <lettre> » ou une touche F5 à F9. J'y ai rajouté

(defun my-footnote ()
"Ouvre une footnote"
(interactive)
(search-backward-regexp "[]})>»,.n[:alnum:]]")
(forward-char)
(insert "~footnote{%n .}")
(backward-char 2)
(indent-for-tab-command))

(defun my-fraction ()
"Insère une fraction"
(interactive)
(insert "frac{}{}")
(backward-char 3))

(defun my-display-fraction ()
"Insère une grande fraction"
(interactive)
(insert "dfrac{}{}")
(backward-char 3))

(defun my-frac-or-foo ()
"Insère une fraction ou une footnote selon le contexte"
(interactive)
(if (texmathp)
(my-fraction)
(my-footnote)))

(defun my-nombre ()
"Insère "nombre{}""
(interactive)
(insert "nombre{}")
(backward-char 1))

(defun my-latex-keys ()
"Touches LaTeX"
(interactive)
(setq skeleton-pair t)
(define-key LaTeX-mode-map (kbd "C-c f") 'my-frac-or-foo)
(define-key LaTeX-mode-map (kbd "C-c F") 'my-display-fraction)
(define-key LaTeX-mode-map (kbd "C-c n") 'my-nombre)
(define-key LaTeX-mode-map (kbd "C-c !") 'TeX-next-error)
(define-key LaTeX-mode-map "$" 'skeleton-pair-insert-maybe)
(define-key LaTeX-mode-map "{" 'skeleton-pair-insert-maybe)
(define-key LaTeX-mode-map "(" 'skeleton-pair-insert-maybe)
(define-key LaTeX-mode-map "[" 'skeleton-pair-insert-maybe)
(define-key LaTeX-mode-map (kbd "<S-iso-lefttab>") 'TeX-complete-symbol))

;;; (*) LaTeX-mode-map, et non tex- ou latex-mode-map ...

(add-hook 'LaTeX-mode-hook 'my-latex-keys)

Est-il possible de configurer emacs pour que lorsqu'on ouvre une
parenthèse il la ferme immédiatement et place le curseur entre les
deux parenthèses.



;;; avec Emacs, on ne demande pas si c'est possible, mais comment ;)
(setq skeleton-pair t)
(defun my-skeleton-keys ()
(local-set-key "{" 'skeleton-pair-insert-maybe)
(local-set-key "(" 'skeleton-pair-insert-maybe)
(local-set-key "[" 'skeleton-pair-insert-maybe))

(add-hook 'text-mode-hook 'my-skeleton-keys)
(add-hook 'emacs-lisp-mode-hook 'my-skeleton-keys)

On pourrait aussi faire un global-set-key, mais je ne me rappelle plus
pourquoi je m'en passe.


Merci



de rien,
--
Jacques L'helgoualc'h
Avatar
Helene Dumur
Valère Bonnet wrote:
Bonsoir à tous,

J'ai l'habitude d'utiliser winedt pour taper mon code latex sous
windows. J'aimerais utiliser emacs sous linux.
Sous Winedt j'ai créé beaucoup de raccourcis clavier pour simplifier
la saisie.
Par exemple, sous winedt, lorsque je frappe: œf
(œ est la touche en-dessous de ESC sur mon clavier et donc facile
d'accès)
Le "œf" est effacé et remplacer par"frac{}" avec le curseur entre
les accolades.
J'ai voulu faire la même chose sous emacs et jai entré le code
suivant dans .emacs

(require 'tex-site)
(fset 'frac
[? ?f ?r ?a ?c ?{ ?{ left])
(define-key tex-default-mode-map [œf] 'frac)


Lorsque j'ouvre un fichier LaTeX, la macro frac est reconnue, mais la
séquence œf ne l'est pas.
Une telle démarche est-elle possible avec emacs ?
si oui, comment ?

Est-il possible de configurer emacs pour que lorsqu'on ouvre une
parenthèse il la ferme immédiatement et place le curseur entre les
deux parenthèses.

Merci



Est-ce que ça pourrait t'aider ?

;; Put the following lines into your .emacs file, and whenever you type
e.g. {, you will actually get {}, with the cursor positioned in between
the two symbols.

(global-set-key """ 'skeleton-pair-insert-maybe)
(global-set-key "'" 'skeleton-pair-insert-maybe)
(global-set-key "`" 'skeleton-pair-insert-maybe)
(global-set-key "{" 'skeleton-pair-insert-maybe)
(global-set-key "[" 'skeleton-pair-insert-maybe)
(global-set-key "(" 'skeleton-pair-insert-maybe)
(global-set-key "<" 'skeleton-pair-insert-maybe)
(setq skeleton-pair 1)
Avatar
drkm
Jacques L'helgoualc'h <lhh+ writes:

les raccourcis utilisateurs doivent utiliser de
préférence un « C-c <lettre> »



Tiens, je pensais que c'était réservé aux modes mineurs (ou
même majeurs, en fait).

(defun my-latex-keys ()
"Touches LaTeX"
(interactive)
(setq skeleton-pair t)
(define-key LaTeX-mode-map (kbd "C-c f") 'my-frac-or-foo)
(define-key LaTeX-mode-map (kbd "C-c F") 'my-display-fraction)
(define-key LaTeX-mode-map (kbd "C-c n") 'my-nombre)
(define-key LaTeX-mode-map (kbd "C-c !") 'TeX-next-error)
(define-key LaTeX-mode-map "$" 'skeleton-pair-insert-maybe)
(define-key LaTeX-mode-map "{" 'skeleton-pair-insert-maybe)
(define-key LaTeX-mode-map "(" 'skeleton-pair-insert-maybe)
(define-key LaTeX-mode-map "[" 'skeleton-pair-insert-maybe)
(define-key LaTeX-mode-map (kbd "<S-iso-lefttab>") 'TeX-complete-symbol))

;;; (*) LaTeX-mode-map, et non tex- ou latex-mode-map ...

(add-hook 'LaTeX-mode-hook 'my-latex-keys)



Plutôt qu'un hook exécuté à chaque exécution de 'latex-mode',
qui redéfinit à chaque fois des touche déjà définies (sauf à la
première exécution, évidemment), pourquoi ne pas utiliser
'eval-after-load' ?

(eval-after-load 'latex ; ou "latex" pour compatibilité
'(my-latex-keys))

--drkm
Avatar
Jacques L'helgoualc'h
Le 29-05-2005, drkm a écrit :
Jacques L'helgoualc'h <lhh+ writes:

les raccourcis utilisateurs doivent utiliser de
préférence un « C-c <lettre> »



Tiens, je pensais que c'était réservé aux modes mineurs (ou
même majeurs, en fait).



C'est ce que j'avais cru comprendre --- les raccourcis standards
d'AUCTeX sont pratiquement tous en « C-c <non-lettre> », mais i n'y en a
aucun en « C-c <lettre> ».

(defun my-latex-keys ()




[...]
(add-hook 'LaTeX-mode-hook 'my-latex-keys)



Plutôt qu'un hook exécuté à chaque exécution de 'latex-mode',
qui redéfinit à chaque fois des touche déjà définies (sauf à la
première exécution, évidemment), pourquoi ne pas utiliser
'eval-after-load' ?

(eval-after-load 'latex ; ou "latex" pour compatibilité
'(my-latex-keys))



Merci,
--
Jacques L'helgoualc'h
Avatar
Jacques L'helgoualc'h
Le 29-05-2005, drkm a écrit :
Jacques L'helgoualc'h <lhh+ writes:

les raccourcis utilisateurs doivent utiliser de
préférence un « C-c <lettre> »



Tiens, je pensais que c'était réservé aux modes mineurs (ou
même majeurs, en fait).



C'est ce que j'avais cru comprendre --- les raccourcis standards
d'AUCTeX sont pratiquement tous en « C-c <non-lettre> », mais il n'y en
a aucun en « C-c <lettre> ».

(defun my-latex-keys ()




[...]
(add-hook 'LaTeX-mode-hook 'my-latex-keys)



Plutôt qu'un hook exécuté à chaque exécution de 'latex-mode',
qui redéfinit à chaque fois des touche déjà définies (sauf à la
première exécution, évidemment), pourquoi ne pas utiliser
'eval-after-load' ?

(eval-after-load 'latex ; ou "latex" pour compatibilité
'(my-latex-keys))



Merci,
--
Jacques L'helgoualc'h
Avatar
drkm
Jacques L'helgoualc'h <lhh+ writes:

Le 29-05-2005, drkm a écrit :

Jacques L'helgoualc'h <lhh+ writes:

les raccourcis utilisateurs doivent utiliser de
préférence un « C-c <lettre> »



Tiens, je pensais que c'était réservé aux modes mineurs (ou
même majeurs, en fait).



C'est ce que j'avais cru comprendre --- les raccourcis standards
d'AUCTeX sont pratiquement tous en « C-c <non-lettre> », mais il n'y en
a aucun en « C-c <lettre> ».



Tu as raison. Les règles sont un peu plus compliquées.
Extrait de (info: (elisp)Coding Conventions), où il y a encore
d'autres règles concernant les bindings :

* Please do not define `C-c LETTER' as a key in your major modes.
Sequences consisting of `C-c' and a letter (either upper or lower
case) are reserved for users; they are the *only* sequences
reserved for users, so do not block them.

Changing all the Emacs major modes to respect this convention was a
lot of work; abandoning this convention would make that work go to
waste, and inconvenience users. Please comply with it.

* Sequences consisting of `C-c' followed by a control character or a
digit are reserved for major modes.

* Sequences consisting of `C-c' followed by `{', `}', `<', `>', `:'
or `;' are also reserved for major modes.

* Sequences consisting of `C-c' followed by any other punctuation
character are allocated for minor modes. Using them in a major
mode is not absolutely prohibited, but if you do that, the major
mode binding may be shadowed from time to time by minor modes.

* Function keys <F5> through <F9> without modifier keys are reserved
for users to define.

--drkm
Avatar
Ph. Idlavi
"Valère Bonnet" écrivit le 05/29/05 à
15h04:03 :

Bonsoir à tous,



Bonjour,


J'ai l'habitude d'utiliser winedt pour taper mon code latex sous
windows. J'aimerais utiliser emacs sous linux.
Sous Winedt j'ai créé beaucoup de raccourcis clavier pour simplifier
la saisie.
Par exemple, sous winedt, lorsque je frappe: œf
(œ est la touche en-dessous de ESC sur mon clavier et donc facile
d'accès)
Le "œf" est effacé et remplacer par"frac{}" avec le curseur entre
les accolades.
J'ai voulu faire la même chose sous emacs et jai entré le code
suivant dans .emacs




J'utilise avec bonheur le paquet latex-tempo.el :
http://www.linux-france.org/prj/emacs/lt.html

Il suffit alors de taper, dans le buffer courant, le début d'une
"abréviation" puis [F3] pour avoir le code correspondant.

Chez moi, j'ai inséré ceci dans latex-tempo :

8<------8<------8<------8<------8<------8<------8<------8<------8<------
(mapcar
'latex-tempo-com
'(("int" ("int_{" (p "liminf :") "}^{" (p "limsup :") "}" p
";d"(p "variable :")))
("abs" ("leftvert "p" rightvert"))
("df" ("dfrac{"p"}{"p"}"))
("no" ("norm{"p"}"))
("bi" ("binom{"p"}{"p"}"))
("fr" ("frac{"p"}{"p"}"))
("sq" ("sqrt{"p"}"))
("su" ("sum_{"p"}^{"p"}"))
("coo" ("left("p",;,"p"right)"))
("coop" ("left["p",;,"p"right]"))
("coov" (& >"left(begin{array}[c]{c}%"n
r >
n"end{array}right)"> %))
("par" ("left("p"right)"))
("cro" ("left["p"right]"))
("acc" ("left{"p"right}"))
("se" ("set{"p"}"))
("ov" ("overline{"p"}"))
("und" ("underline{"p"}"))
("db" ("dbinom{"p"}{"p"}"))
("te" ("text{"p"}"))
("ve" ("vecteur{"p"}"))
("mq" ("montrer que"))
("dmq" ("démontrer que"))
("Mq" ("Montrer que"))
("Dmq" ("Démontrer que"))
("cr" ("courbe représentative"))
("Et" ("'Etudier"))
("oij" ("(O,;,vec{imath},vec{jmath})"))
("ouv" ("(O,;,vec{u},vec{v})"))
("oijk" ("(O,;,vec{imath},vec{jmath},vec{k})"))
("got" ("textgoth{"p"}"))
("fra" ("textfrak{"p"}"))
("ssi" ("si et seulement si "))
("ou" ("o`u"))
("rp" ("repère orthonormé "))
("act" ((act)))
("lv" ((f TeX-insert-macro "limv")))
("ca" ((f TeX-insert-macro "card")))
("fr" ((f TeX-insert-macro "frac")))
("iff" ("left["p",;,"p"right] "));intervalle fermé fermé
("ifo" ("left["p",;,"p"right[ "))
("iof" ("left]"p",;,"p"right] "))
("ioo" ("left]"p",;,"p"right[ "))
("Df" ("mathscr{D}_f"))
("Cf" ("mathscr{C}_f"))
("cal" ("mathscr{"p"}"))
("ent" ("Rightarrow "))
("equ" ("Leftrightarrow "))
("nent" ("nRightarrow "))
("nequ" ("nLeftrightarrow "))
("gui" ("og{}"p"fg{}"))
("nn" ("mathbb{N}"))
("nne" ("mathbb{N}^{star}"))
("rr" ("mathbb{R}"))
("rre" ("mathbb{R}^{star}"))
("rrp" ("mathbb{R}^{+}"))
("rrm" ("mathbb{R}^{-}"))
("rrep" ("mathbb{R}^{star+}"))
("rrem" ("mathbb{R}^{star-}"))
("cc" ("mathbb{C}"))
("dd" ("mathbb{D}"))
("zz" ("mathbb{Z}"))
("dd" ("mathbb{D}"))
("qq" ("mathbb{Q}"))
("eto" ("^{star}"))
("etop" ("^{star+}"))
("etom" ("^{star-}"))
("qpq" ("quad;quad"))
("qeq" ("quadtext{et}quad"))
("qoq" ("quadtext{o"p"}quad"))
("qpq" ("quad;quad"))
("mpv" (",;,"))
("comp" ("makebox["(p "longueur (en mm):")"mm][l]{dotfill};"))
("limx" ("underset{xrightarrow"(p "x tends vers :")"}{lim}"))
("sol2" ("mathscr{S}=left{"p",;,"p"right}"))
("sol3" ("mathscr{S}=left{"p",;,"p",;,"p"right}"))
("sol4" ("mathscr{S}=left{"p",;,"p",;,"p",;,"p"right}"))
("sol5" ("mathscr{S}=left{"p",;,"p",;,"p",;,"p",;,"p"right}"))
("vec" ("vec{"r"}"))
("aor" ("left(vec{"r"},,;vec{"r"}right)"))
("aori" ("left(vec{imath},,;vec{"r"}right)"))
("aoru" ("left(vec{u},,;vec{"r"}right)"))
("pis" ("dfrac{pi}{"(p "Pi sur:")"}"))
("pinf" ("+infty"))
("minf" ("-infty"))
("sca" ("vec{"p"}cdotvec{"p"}"))
));;Here LaTeX commands tags
8<------8<------8<------8<------8<------8<------8<------8<------8<------

abs [F3] me donne leftvert rightvert avec le curseur dans
l'espace.
Lire la doc pour le formatage des environnements et autre...

--
Philippe.
Avatar
Valère Bonnet
Merci à tous pour toutes ces informations.
Bonne fin de journée.
Valère Bonnet