2012-01-03 10 views
7

Estoy intentando hacer accesos directos para emacs portátiles que enlacen a un compilador LaTeX portátil y R para Sweave, pero sé muy poco sobre el lenguaje utilizado en .emacs (¿esto es Lisp?)Obtener el nombre del archivo de búfer sin extensión en .emacs

Actualmente estoy usando fullpath-relative-to-current-file obtenida de http://xahlee.org/emacs/elisp_relative_path.html para obtener la ruta a .emacs (que está en USBDRIVE/Documents), a continuación, obtener la ruta relativa al compilador y lo llaman en buffer-file-name que es la ruta completa y el nombre del archivo incluyendo la extensión de la extensión:

(global-set-key (kbd "C-c s") 
     (lambda() 
      (interactive) 
      (cond ((string-equal (file-name-extension (buffer-file-name)) "tex") 
       (shell-command (concat (fullpath-relative-to-current-file "../PortableApps/miktex/miktex/bin/pdflatex ") buffer-file-name))) 
      ) 
      (cond ((string-equal (file-name-extension (buffer-file-name)) "Rnw") 
       (shell-command (concat (fullpath-relative-to-current-file "../PortableApps/R/R-2.14.1/bin/R CMD Sweave ") buffer-file-name " --pdf"))) 
      ) 
     ) 
) 

Esto me permite usar C-c s para ejecutar LaTeX en un archivo tex y Sweave en un archivo Rnw. Ahora me gustaría incluir llamadas a bibtex, pero para eso necesito el nombre de archivo y la ruta del archivo tex sin extensión. ¿Cómo puedo hacer eso?

Respuesta

22

Probar file-name-sans-extension. Para obtener más información, lea la sección File Name Components del manual.

+2

Gracias. '(file-name-sans-extension buffer-file-name)' funcionó. –

Cuestiones relacionadas