Rédaction…

En ce moment je suis pas mal occupé dans la rédaction d’un mémoire et c’est l’occasion pour moi d’explorer un peu plus de fonctionnalités d’Emacs/AucTeX et certaines limitations aussi.

Du coup, je rajoute des petits bouts de code dans mes fichiers de configurations et en attendant de mettre à jour ceux qui sont à disposition dans la section « code » de ce site, en voici un extrait:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
(defun LaTeX-compile ()
  "An interface to `compile'.
It calls `compile' and define the compile command depending on
the presence of a makefile. Takes into account the master-file
system as defined by AucTeX for multiple file documents."
  (interactive)
  (let ((master-name (expand-file-name (TeX-master-file)))
        (makefile-candidate_u 
          (concat
            (file-name-directory 
              (expand-file-name (TeX-master-file))) 
              "Makefile"))
	(makefile-candidate_l 
          (concat 
            (file-name-directory 
             (expand-file-name (TeX-master-file))) 
             "Makefile"))
	(use-tex-command nil)
	)
 
    (if (not master-name)(error "cannot get master's filename."))
 
    (cond
     ;; Makefile ?
     ((file-readable-p makefile-candidate_u)
      (set (make-local-variable 'compile-command)
	   (concat "cd `dirname " makefile-candidate_u "`; make ref"))
      )
 
     ;; makefile ?
     ((file-readable-p makefile-candidate_u)
      (set (make-local-variable 'compile-command)
	   (concat "cd `dirname " makefile-candidate_u "`; make ref"))
     )
 
     ;; else
     (t
      (if (and (local-variable-p 'compile-command)
	       compile-command)
	    (setq use-tex-command t))
      )
     )
     ;; compile
    (if (not use-tex-command)
	(call-interactively 'compile)
      (TeX-command-master)
      )
    )
  )

La fonction que l’on crée ainsi est toute bête en fait, elle permet d’utiliser un Makefile, s’il existe, pour compiler le document courant et si le makefile n’existe pas on lance la commande par défaut (et configurée au niveau de AucTeX).

Grâce à AucTeX justement ça marche comme un charme pour des documents constitué de plusieurs fichiers .tex, où l’on fait juste la supposition que le Makefile (toujours s’il existe) est dans le même répertoire que le document maître.

Très pratique…

  • Ogg

    Y des jours où tu me fais peur… Et ce genre de jour est finalement assez fréquent…

  • Bah fo avouer que poster du lisp sur son blog… c un peu le summun du genre. En même temps c’est aussi quelque chose que tout geek qui se respecte doit faire :)