Accueil > Mathématiques > Maths & logiciels > Emacs & SageMath

Emacs & SageMath

samedi 28 novembre 2020, par Vincent

Introduction

À l’aide des paquets polymode et sage-shell-mode, il est facile de configurer emacs pour travailler efficacement avec sagemath.

Quelques exemples d’utilisation :

  • Écrire un script sage et l’évaluer
  • Écrire du code latex contenant des morceaux de sage à l’aide de sagetex
  • Utiliser sage de manière interactive
  • ...

Voici un exemple de configuration à l’aide de straight

sage-shell-mode

D’après la documentation officielle :

(use-package sage-shell-mode
  :straight t
  :init
  (setq sage-shell:use-prompt-toolkit t)
  (sage-shell:define-alias)
  (eval-after-load "latex"
    '(mapc (lambda (key-cmd) (define-key LaTeX-mode-map (car key-cmd) (cdr key-cmd)))
           `((,(kbd "C-c s c") . sage-shell-sagetex:compile-current-file)
             (,(kbd "C-c s C") . sage-shell-sagetex:compile-file)
             (,(kbd "C-c s r") . sage-shell-sagetex:run-latex-and-load-current-file)
             (,(kbd "C-c s R") . sage-shell-sagetex:run-latex-and-load-file)
             (,(kbd "C-c s l") . sage-shell-sagetex:load-current-file)
             (,(kbd "C-c s L") . sage-shell-sagetex:load-file)
             (,(kbd "C-c C-z") . sage-shell-edit:pop-to-process-buffer))))
  )

Polymode

Enfin, pour que les morceaux de code sage dans un tampon LaTeX bénéficient du mode python, on peut utiliser polymode.

(use-package polymode
  :straight t

  :config

  (define-innermode poly-latex-sage-mode-innermode
    :mode 'sage-mode
    :head-matcher "\\\\begin{sagesilent}"
    :tail-matcher "\\\\end{sagesilent}"
    :head-mode 'host
    :tail-mode 'host)


  (define-polymode poly-latex-mode
    :hostmode 'pm-host/latex
    :innermodes '(poly-latex-sage-mode-innermode) )

  (add-to-list 'auto-mode-alist '("\\.tex$" . poly-latex-mode))

  )

Addendum

  • Ces paquets sont très utiles avec sagetex : il suffit de saisir C-c s r pour compiler le fichier latex puis lancer sage sur le fichier sage produit.
  • Le paquet ob-sagemath intéressera certainement les utilisateurs de org-mode
  • Pour sage 9.2, il faut lancer la commande sage avec l’option —simple-prompt