Emacs + AucTeX

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Emacs + AucTeX

Messagepar dav » Lundi 10 Octobre 2016, 08:16

Bonjour à tous,

J'utilise régulièrement Emacs + AucTex pour taper du LaTeX mais j'aimerais maintenant "progresser" encore : j'ai récemment découvert Melpa pour installer des paquets supplémentaires pour Emacs, et j'ai d'autres questions sur AucTex.

- Mon préambule est dans un fichier "header.tex" que j'appelle à l'aide de la commande header. Il contient par exemple "\usepackage{amsmath}" mais lorsque je tape \dfrac, je n'ai pas l'autocomplétion. Par contre, si je rajoute explicitement le "\usepackage{amsmath}" dans le fichier en cours, l'autocomplétion fonctionne : savez-vous comment faire pour que l'autocomplétion fonctionne pour tous les paquets que j'utilise, ainsi que pour mes macros personnelles (qui elles aussi se trouvent dans le fichier header.tex ?

- Est-il possible d'avoir un comportement à la vim : par exemple, insérer \dfrac me mettrait automatiquement les deux paires d'accolades, placerait le curseur à l'intérieur de la première paire, et un raccourci clavier me permettrait de déplacer le curseur dans la deuxième paire d'accolades puis à l'extérieur ? Une sorte d'équivalent de <-++-> de Vim en somme...

- AucTex est-il sensé gérer l'environnement multicols ? (comprendre est-il sensé me demander le nombre de colonnes et le rajouter automatiquement ?) Ou dois-je passer par des fichiers de style pour avoir le support pour multicols. Comment rajouter le "path" vers mes fichiers de style lorsque j'en ai ?

Voilààà !! Un grand merci déjà de m'avoir lu... et si vous pouvez m'aider... ce serait génial !
dav
Utilisateur
 
Messages: 5
Inscription: Mardi 08 Décembre 2009, 20:30
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: Emacs + AucTeX

Messagepar gigiair » Lundi 10 Octobre 2016, 10:50

dav a écrit:Bonjour à tous,
J'utilise régulièrement Emacs + AucTex pour taper du LaTeX mais j'aimerais maintenant "progresser" encore : j'ai récemment découvert Melpa pour installer des paquets supplémentaires pour Emacs, et j'ai d'autres questions sur AucTex.

Excellent, ça permet d'avoir toujours AUCTeX à jour
dav a écrit:- Mon préambule est dans un fichier "header.tex" que j'appelle à l'aide de la commande header. Il contient par exemple "\usepackage{amsmath}" mais lorsque je tape \dfrac, je n'ai pas l'autocomplétion. Par contre, si je rajoute explicitement le "\usepackage{amsmath}" dans le fichier en cours, l'autocomplétion fonctionne : savez-vous comment faire pour que l'autocomplétion fonctionne pour tous les paquets que j'utilise, ainsi que pour mes macros personnelles (qui elles aussi se trouvent dans le fichier header.tex ?

Normal. Le fichier header.tex n''est pas chargé en même temps que le fichier en cours d'édition et n'est donc pas scanné. Les fichiers de style des packages inclus ne sont donc pas détectés. Il y a moyen de forcer la lecture des fichiers inclus mais comme je n'utilise pas ça je ne sais trop comment faire. Évaluer dans n'importe quel buffer `(info "(auctex)parsing files")' pour plus de détails. Si tu ne trouves pas, je peux chercher mais il me faut un peu de temps.

Personnellement je préfère tout charger et d'utiliser le `narrowing' (info "(emacs)narrowing").
AUCTeX ajoute la restriction à l'environnement courant C-x n e (par exemple à l'environnement document). Si on a des retouches à faire dans l'entête, il suffit de revenir au document entier C-x n w.
dav a écrit:- Est-il possible d'avoir un comportement à la vim : par exemple, insérer \dfrac me mettrait automatiquement les deux paires d'accolades, placerait le curseur à l'intérieur de la première paire, et un raccourci clavier me permettrait de déplacer le curseur dans la deuxième paire d'accolades puis à l'extérieur ? Une sorte d'équivalent de <-++-> de Vim en somme...

yasnippet fait ça. Je n'utilise pas, donc je ne peux pas trop dire. le fichier de style pour amsmath a un gabarit pour \dmath mais il ne permet pas de sauter d'un champ à l'autre.
dav a écrit:- AucTex est-il sensé gérer l'environnement multicols ? (comprendre est-il sensé me demander le nombre de colonnes et le rajouter automatiquement ?) Ou dois-je passer par des fichiers de style pour avoir le support pour multicols. Comment rajouter le "path" vers mes fichiers de style lorsque j'en ai ?

Ça fait beaucoup de questions, beaucoup trop pour un seul fil.

Avec AUCTeX 11.89.5 installé par melpa, les fichiers de style sont dans les répertoires de TeX-style-path. J'ai un multicol.el
Code: Tout sélectionner
;;; multicol.el --- AUCTeX style for `multicol.sty'

;; Copyright (C) 2011 Free Software Foundation, Inc.

;; Author: Mads Jensen <mje@inducks.org>
;; Maintainer: auctex-devel@gnu.org
;; Created: 2011-01-24


(add-to-list 'TeX-style-path "/chemin/vers/répertoire")
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2274
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Re: Emacs + AucTeX

Messagepar gigiair » Lundi 10 Octobre 2016, 19:15

J'ai fait quelques tests pour voir si un fichier inclus par \input contenant un \usepackage était reconnu.
La réponse est positive sur mon installation (AUCTeX 11.89.5)
Code: Tout sélectionner
%%% test.tex ---
\documentclass[12pt,a4paper,french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\input{header}
\begin{document}

\end{document}

et mon fichier header.tex :
Code: Tout sélectionner
%%% header.tex
\usepackage{pstricks}
\usepackage{amsmath}

Quand j'édite le fichier test, le \includepackage{pstricks} a été scanné, car si je fais C-c C-e pour créer un environnement pspicture, celui ci m'est proposé à l'auto-complétion.
Si je commente le \input{header} suivi de C-c C-n (pour relancer le scan), l'environnement pspicture ne m'est plus proposé à l'auto-complétion.

Mais avec amsmath ça ne marche pas, les symboles d'amsmath ne sont pas reconnus, par exemple pour créer un environnement align !
Il faut poser la question sur la liste de diffusion d'AUCTeX, ça sent le bug, ou bien faire comme je l'ai dit plus haut, utiliser le narrowing pour faire disparaître de la vue l'entête du fichier.
--------
Pour être prompté pour garnir un \dfrac{}{} il suffit de modifier légèrement le fichier amsmath.el
ligne 67 remplacer '("dfrac" 2) par '("dfrac" "Numérateur " "Dénominateur ")
Puis M-x emacs-lisp-byte-compile-file-and-load et de retour dans le document, C-c C-n pour recharger les fichiers de style (ou recharger le fichier M-c revert-buffer)
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2274
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Re: Emacs + AucTeX

Messagepar rebouxo » Lundi 10 Octobre 2016, 22:16

Tiens avec un \usepackage{PersoOR}, je n'ai pas d'auto-complétion. Cela dit j'ai palier ce problème en usant de yasnippet.

On l'installe via melpa. Il me semble qu'il faut dire à emacs où est installé yasnippet, mais c'est clairement dit dans la doc.

Il y a déjà pas mal de snippets, pour les snippets perso, il faut créer un répertoire snippet dans le répertoire .emacs.d, et tu mets tes snippets dans des sous-répertoires (latex, python, makefile, c, voir la hiérarchie dans le répertoire des snippets installés par défaut).

Un snippet c'est un fichier texte :
Code: Tout sélectionner
# -*- mode: snippet -*-
# contributor: Olivier Reboux <rebouxo@laposte.net>
# name: \frac{}{}
# key: f
# --
\frac{$1}{$2}$0

On fait un M-x yas-reload-all, et on peut commencer à taper.
f + TAB, affiche \frac{}{} et se place dans les premières accolades, puis TAB, pour la 2e, et TAB.

Il y a une doc assez bien foutue. On peut faire des listes de propositions (a TAB affiche \alpha TAB \approx TAB \alert ...
Perso, je trouve cela très pratique, ce sont tes raccourcis. Un seul regret on ne peut pas faire des snippets à l'intérieur de snippet (pour taper $\frac{\sqrt{3}}{2}$ par exemple.

Olivier
A line is a point that went for a walk. Paul Klee
Par solidarité, pas de MP
rebouxo
Modérateur
 
Messages: 6756
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Re: Emacs + AucTeX

Messagepar dav » Vendredi 28 Octobre 2016, 04:36

Bonjour gigiair et rebouxo !

Je suis sincèrement desolé de ne vous répondre que maintenant. Je vous remercie pour vos réponses et pistes suggérées : je pense utiliser yasnippet, et regrette autant que rebouxo ne pas pouvoir faire de snippets à l'intérieur de snippet. Dommage...

Merci encore !
dav
Utilisateur
 
Messages: 5
Inscription: Mardi 08 Décembre 2009, 20:30
Statut actuel: Actif et salarié | Enseignant

Re: Emacs + AucTeX

Messagepar gigiair » Mercredi 02 Novembre 2016, 12:20

yasnippet, c'est très bien, mais il n'y a pas beaucoup de snippets fournis pour latex-mode. C'est un euphémisme, car je n'en ai aucun. Il faut donc se les taper à la main ou faire une recherche sur le web.
Le mécanisme de style d'AUCTeX dispose actuellement de plus de deux cent fichiers de styles plus ou moins complets qui totalisent 25 312 lignes de code elisp ! C'est énorme. Certains sont très complets comme pstricks.el. (Il faut appeler explicitement pstricks dans le fichier .tex pour en bénéficier) d'autres un peu moins. Il en arrive toujours de nouveaux grâce aux système de package d'Emacs et des mises à jour d'AUCTeX.

Essayer par exemple le fichier de style de multicol :
C-c RET usep TAB ---> \usepackage
Packages : multico TAB ---> multicol
Options: TAB --->
Click on a completion to select it.
In this buffer, type RET to select the completion near point.

Possible completions are:
balancingshow debugshow errorshow
grid infoshow markshow

etc..

Même mécanisme pour créer un environnement multicols
C-c C-e multi TAB ---> multicols
Number of columns: 3
(Optional) Text across columns: Ceci est un chapeau sur les colonnes
(Optional) Local value for \premulticols:
etc.. Voir la doc de multicol.



-----------------------------------------------------------------------------------------------------------------------------
Une rustine pour faire passer le point d'un champ à un autre dans la saisie de champs multiples (\frac{}{} etc.
-----------------------------------------------------------------------------------------------------------------------------
j'ai créé deux fonctions qui font passer le point à la fin du groupe suivant ou à la fin du groupe précédent.
J'espère qu'il n'y a pas d'effet de bord ou d'erreur .
Ensuite, je les affecte chacune à une touche pour aller à droite, ou à gauche.
Placer ça dans le .emacs
Code: Tout sélectionner
 
  (defun latex-forward-next-group ()
    (interactive)
  "Place le point juste avant l'accolade fermante du prochain groupe"
    (search-forward-regexp "{[^}]*"))

  (defun latex-backward-prev-group ()
    (interactive)
  "Place le point juste avant l'accolade fermante du précédent groupe"
    (search-backward-regexp "}"))

;;; reconfiguration du clavier
   (defun LaTeX-réarrange-clavier ()
      "Reconfigure le clavier"
;;; plein d'autres reconfigurations de clavier en mode latex
      (define-key LaTeX-mode-map (kbd "M-<right>") 'latex-forward-next-group)
      (define-key LaTeX-mode-map (kbd "M-<left>") 'latex-backward-prev-group)
      )
;;; On accroche le wagon au mode latex
    (add-hook 'LaTeX-mode-hook 'LaTeX-réarrange-clavier)


J'ai choisi les touches M-flècheD et M-flècheG qui sont normalement attirbuées à forward-word et à backward-word, mais comme il y a aussi les touches C-flècheD et C-flècheG qui y sont aussi affectées, ça ne devrait pas poser de problème.
De toute façon, c'est affaire de goût personnel et on peut faire ce qu'on veut.
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2274
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Re: Emacs + AucTeX

Messagepar gigiair » Mercredi 02 Novembre 2016, 12:42

rebouxo a écrit:Tiens avec un \usepackage{PersoOR}, je n'ai pas d'auto-complétion. Cela dit j'ai palier ce problème en usant de yasnippet.

C'est un peu normal, les développeurs n'ont pas été mis au courant de ton extension, ou n'ont pas eu le temps d'écrire un fichier de style PersoOR.el :D . Il faut le créer dans l'un des répertoire de la liste TeX-style-path (évaluer cette variable par C-x C-e ou par C-h v) puis le compiler.
Évaluer (info '"(auctex)style files") dans n'importe quel buffer pour avoir de l'aide.
On peut prendre modèle sur les fichiers de style existants fournis avec AUCTeX;
Une fois le fichiers de style composé, il faut le compiler (M-x emacs-lisp-byte-compile). Le fichier de style est pris en compte au chargement du fichier LaTeX qui appelle l'extension. En cours de mise au point, pour rendre effectif le fichier de style (compilé) on peut se contenter de M-x TeX-normal-mode qui recharge tous les fichiers de style (C-c C-n)
ain, en suivant l'aide
évaluer (info '"(auctex)style files") dans n'importe quel buffer.
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2274
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Re: Emacs + AucTeX

Messagepar gigiair » Jeudi 29 Décembre 2016, 18:45

dav a écrit:Bonjour à tous,

J'utilise régulièrement Emacs + AucTex pour taper du LaTeX mais j'aimerais maintenant "progresser" encore : j'ai récemment découvert Melpa pour installer des paquets supplémentaires pour Emacs, et j'ai d'autres questions sur AucTex.

- Mon préambule est dans un fichier "header.tex" que j'appelle à l'aide de la commande header. Il contient par exemple "\usepackage{amsmath}" mais lorsque je tape \dfrac, je n'ai pas l'autocomplétion. Par contre, si je rajoute explicitement le "\usepackage{amsmath}" dans le fichier en cours, l'autocomplétion fonctionne : savez-vous comment faire pour que l'autocomplétion fonctionne pour tous les paquets que j'utilise, ainsi que pour mes macros personnelles (qui elles aussi se trouvent dans le fichier header.tex ?

En fouinant un peu dans Stackexchange, j'ai trouvé une réponse.
Il faut charger header.tex ( C-x C-f header.tex RET) dans un buffer, puis C-u C-c C-n ensuite charger le document principal et recommencer la même manip C-u C-c C-n Ensuite, ça baigne.
C-c RET df RET 3 C-f C-f 4 C-f C-f me fait un joli \dfrac{3}{4} | (| figure le point)
Finalement, pour passer d'un champ à un autre C-f vers la droite C-b vers la gauche, autant de fois que nécessaire, c'est ce qui est le plus rapide.
Pareil pour un environnement multicols,
C-c C-e TAB me permet d'accéder très rapidement à multicols et tout le confort du fichier de style multicol.el
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2274
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités