Le 9 mai 2007 à 11:05, Fabrice Eudes a particulièrement retenu mon
attention par le texte suivant :
> c'est très basique: en mode "MetaPost", il n'y a pas de commande
> genre "C-c C-c" pour lancer la compilation comme pour un document
> LaTeX.
si : il y a un mode meta.
Mais il y a plus pratique : d'abord un script shell pour visualiser
direct
8<------8<------8<------8<------8<------8<------8<------8<------
#!/bin/sh
if [ "$1.mp" -nt "$1.eps" ]; then
for fic in *.dvi; do rm -f $fic; done;
for fic in *.log; do rm -f $fic; done;
for fic in *rr.tex; do rm -f $fic; done;
for fic in *.aux; do rm -f $fic; done;
for fic in $1.*[0-9]; do rm -f $fic; done;
mpost -interaction nonstopmode $1
fi
cat>$1.tex<<EOF
\documentclass{article}
\usepackage{preambule} % à remplacer : macros perso
\usepackage{multido}
\thispagestyle{empty}
\begin{document}
\begin{TeXtoEPS}
\includegraphics{$1.$2}
\end{TeXtoEPS}
\end{document}
EOF
latex $1
dvips -o $1.eps -E $1.dvi
for fic in *.mpx; do rm -f $fic; done;
evince $1.eps % à remplacer par gv par exemple
## Fin de view-meta-eps.sh
8<------8<------8<------8<------8<------8<------8<------8<------
Puis on rajoute ce fichier meta.el dans ~/emacs/
où j'ai mis les fichiers emacs persos.
8<------8<------8<------8<------8<------8<------8<------8<------
;;; meta.el --- insertion de figures metapost
;; Copyright (C) 2006 Free Software Foundation, Inc.
;; Keywords: languages
;; This file is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.
;; This file is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to
;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
;; Boston, MA 02111-1307, USA.
;;; Commentary:
;;
;;; Code:
;; Variables à modifier éventuellement
(defvar pi-mp-view-eps "~/bin/view-meta-eps.sh")
(defvar pi-mp-anime-pdf "~/bin/anime-meta-pdf.sh")
;; FIN des variables à modifier
(defun pi-mp-view(numfig)
"Compilation et visualisation d'un fichier Metapost."
(interactive "sNumero de figure (defaut=0) : ")
(if (string= numfig "") (setq numfigtmp "0") (setq numfigtmp numfig))
(let ((mp-shell (expand-file-name pi-mp-view-eps)))
(setq mp-command (concat mp-shell " " (file-name-sans-extension
(buffer-file-name)) " "
numfigtmp " &"))
(if (buffer-modified-p) (save-buffer))
(shell-command mp-command)
(set-window-text-height nil (ceiling (* (frame-height) .7)))
))
(define-key meta-mode-map [(control c) (control c)] 'pi-mp-view)
(defun pi-mp-pdf()
"Compilation et visualisation des sorties Metapost sous forme
d'animation pdf (Beamer)."
(interactive "sNombre de figures : ")
(let ((mp-shell (expand-file-name pi-mp-anime-pdf)))
(setq mp-command (concat mp-shell " " (file-name-sans-extension (buffer-file-name)) " &"))
(if (buffer-modified-p) (save-buffer))
(shell-command mp-command)
(set-window-text-height nil (ceiling (* (frame-height) .7)))
))
(define-key meta-mode-map [(control c) (control p)] 'pi-mp-pdf)
(define-key meta-mode-map "\"" 'skeleton-pair-insert-maybe)
(define-key meta-mode-map "\{" 'skeleton-pair-insert-maybe)
(define-key meta-mode-map "\[" 'skeleton-pair-insert-maybe)
(define-key meta-mode-map "\(" 'skeleton-pair-insert-maybe)
(setq skeleton-pair 1)
;8<------8<------8<------8<------8<------8<------8<------8<------8<-----
(provide 'meta)
;;; meta.el ends here
8<------8<------8<------8<------8<------8<------8<------8<------
Puis on rajoute ceci dans .emacs
8<------8<------8<------8<------8<------8<------8<------8<------
;;;;;;;;;;; ;;;;Metapost; ;;;;;;;;; ;;;;;;;;
(autoload 'metafont-mode "meta-mode" "Metafont editing mode." t)
(autoload 'metapost-mode "meta-mode" "MetaPost editing mode." t)
(setq auto-mode-alist
(append '(("\\.mf\\' " . metafont-mode)
("\\.mp\\'" . metapost-mode) ) auto-mode-alist) )
(add-hook 'metapost-mode-hook
'(lambda ()
(load "meta")))
8<------8<------8<------8<------8<------8<------8<------8<------
Et maintenant, un C-c C-c affiche la figure en eps.
On peut modifier en rajoutant un ps2pdf dans le script sh si tu veux
du pdf.
Ensuite, il y a d'autres magnifiques outils de Philippe (Ivaldi) comme
la complétion automatique avec tempo
8<------8<------8<------8<------8<------8<------8<------8<------
(require 'pi-tempo-abbrev)
;; *======================================================*
;; *............Abbreviations for meta-mode...............*
;; *======================================================*
(eval-after-load "meta-mode"
'(progn
(tempo-abbrev-add
'(metapost-mode-hook) ;; List of modes where the following table will use.
'tempo-abbrev-meta-table ;; Table name (* MUST BE UNIQUE *).
'tempo-abbrev-meta-tagslist ;; Name of the variable where the tag list should be added.
'(
("pre" ("%input newcourbes;
%input couleur;
input geometriesyr16;
%input TEX;
verbatimtex
%&latex
\\documentclass{article}
\\usepackage[upright]{fourier}
\\usepackage{preambule}
\\begin{document}
etex
" n>
p > "
end"))
("bf" (& > "beginfig(" p ");" n> p n "endfig;" > %))
("vardef" (& > "vardef " p "("p") =" n> p n "enddef;" > %))
("def" (& > "def " p "("p") =" n> p n "enddef;" > %))
("primarydef" ("primarydef " p "=" n> "begingroup;" n> p n "endgroup;" > n "enddef;" > &))
("begingroup" (& > "begingroup" n> p n "endgroup;" > %))
("if" (> "if " p " :" n>
p n >
> "fi;"> %))
("ife" (> "if " p " :" n> p n> "else:" > n> p n> "fi;" > %))
("ifeif" (> "if " p " :" n> p n "elseif " > p " :" n> p n> "fi;" > %))
("for" ("for " p " :" n> p n> "endfor;" > %))
("forw" ("for " p " within " p " :" n> p n> "endfor;" > %))
("fori" (& >"for " (p "Variable: ") "=0 upto " p " : " n>
p n >
> "endfor;"> %))
("forid" (& >"for " (p "Variable: ") "=0 downto " p " : " n>
p n >
> "endfor;"> %))
("forever" ("forever:" n> p n> "exitif " p ";" n> "endfor;" > %))
("bc" ("buildcycle(" p ")"))
("sca" ("scaled "))
("shi" ("shifted "))
("rot" ("rotated "))
("wps" ("withpen pencircle scaled "))
("wc" ("withcolor "))
("ds" ("draw " p " withpen pencircle scaled " p ";"))
("dc" ("draw " p " withcolor " p))
("dsc" ("draw " p " withpen pencircle scaled " p " withcolor " p ";"))
("cp" ("currentpicture "))
("wha" ("whatever "))
("intt" ("intersectiontimes "))
("intp" ("intersectionpoint "))
("cir" ("fullcircle "))
("squ" ("unitsquare "))
("fill" ("fill " p " withcolor " p))
("sub" ("subpath(" p ")"))
("len" ("length(" p ")"))
("btex" ("btex " p " etex "))
("lab" ("label."p"(btex " p "etex, "p ");"))
("esp" (& > "figureespace(" p","p","p","p ");" n> "Initialisation(5,25,30,700);"p n "finespace;" > %))
("fonc" ("
beginfig( "p")
%%%%%%%%%%%%%%%%%%%%%%%
vardef fx(expr t)=
t
enddef;
vardef fy(expr t)=
"p" % c'est la seule ligne à changer
enddef;
%%%%%%%%%%%%%%%%%%%%%
repere(0,0,"p","p","p","p","p"cm,"p"cm);
r_axes;
r_origine;
r_unites;
r_labelxy;
quad_xy(0.2,bleu_ciel);
quadu_xy(0.1*bleu_ciel);
grad_x(1,1,0.4white);
grad_y(1,1,0.4white);
draw f_courbe(fx,fy,"p","p",100)withpen pencircle scaled 1.5bp withcolor red;
r_fin;
endfig;
"))
("tan" ("draw f_tangente(fx,fy,"p",0.05);"))
("tanf" ("tracef_tangente(fx,fy,a,larg,0.05,coul);"))
;; `Place_here_your_abbreviations_for_meta-mode'
))))
8<------8<------8<------8<------8<------8<------8<------8<------
Alors pre + espace affiche un préambule standard.
Il faut aussi ce fichier pi-abrev-tempo à mettre dans ~/emacs
8<------8<------8<------8<------8<------8<------8<------8<------
(define-abbrev-table 'outline-mode-abbrev-table '(
))
(define-abbrev-table 'docTeX-mode-abbrev-table '(
))
(define-abbrev-table 'ibuffer-occur-mode-abbrev-table '(
))
(define-abbrev-table 'occur-mode-abbrev-table '(
))
(define-abbrev-table 'text-mode-abbrev-table '(
))
(define-abbrev-table 'lisp-interaction-mode-abbrev-table '(
))
(define-abbrev-table 'emacs-lisp-mode-abbrev-table '(
))
(define-abbrev-table 'lisp-mode-abbrev-table '(
))
(define-abbrev-table 'fundamental-mode-abbrev-table '(
))
(define-abbrev-table 'global-abbrev-table '(
))
8<------8<------8<------8<------8<------8<------8<------8<------
Il faut rajouter dans .emacs
8<------8<------8<------8<------8<------8<------8<------8<------
(setq-default abbrev-mode t)
(require 'pi-tempo-abbrev)
(setq tempo-interactive t)
(setq-default tempo-insert-region nil)
;; (load "pi-tempo-abbrev-latex")
(load "pi-tempo-abbrev-meta")
8<------8<------8<------8<------8<------8<------8<------8<------
J'ai dû en oublier. Le mieux est de contacter ensuite Philippe.
http://piprim.tuxfamily.org/index.html
-- Guillaume Connan http://gconnan.free.fr
_______________________________________________
Liste de diffusion Syracuse
Syracuse@melusine.eu.org
http://melusine.eu.org/cgi-bin/mailman/listinfo/syracuse
Adresse alternative du site :
http://syracuse.eu.org/syracuse/
Received on Wed May 9 14:14:22 2007
Cette archive a été créée par hypermail 2.1.8 : mer mai 09 2007 - 15:37:03 CEST