2012-01-03 13 views
7

Taşınabilir bir LaTeX derleyicisi ve R for Sweave için bağlanan taşınabilir emacs için kısayollar yapmaya çalışıyorum, ancak .emacs (bu Lisp nedir?).emacs uzantısı olmadan arabellek dosyası adı edinin

kullanılan dil hakkında çok az şey biliyorum. Ben ( USBDRIVE/Documents olan) .emacs yolunu almak için http://xahlee.org/emacs/elisp_relative_path.html elde edilen fullpath-relative-to-current-file kullanıyorum

Halen sonra derleyici göreli yolu olsun ve uzatma uzatma dahil olmak üzere tam yolu ve dosya adıdır buffer-file-name üzerine diyoruz:

(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"))) 
      ) 
     ) 
) 

Bu, bir tex dosya ve Sweave bir Rnw dosya üzerinde LaTeX çalıştırmak için C-c s kullanmanıza olanak sağlar. Şimdi ben bibtex çağrıları eklemek istiyorum, ancak bunun için dosya uzantısı ve uzantısı olmadan tex dosyasının yoluna ihtiyacım var. Bunu nasıl yapabilirim?

cevap

22

file-name-sans-extension ürününü deneyin. Daha fazla bilgi için kılavuzun File Name Components bölümünü okuyun.

+2

Teşekkürler. '(dosya-adı-sans-extension buffer-dosya-adı) çalıştı. –