2012-01-03 72 views
7

我試圖爲便攜式emacs鏈接到便攜式LaTeX編譯器和R爲Sweave創建快捷方式,但我對.emacs(這是Lisp?)在.emacs中獲取沒有擴展名的緩衝區文件名

目前我使用從http://xahlee.org/emacs/elisp_relative_path.html獲得fullpath-relative-to-current-file拿到路徑.emacs(這是USBDRIVE/Documents),然後得到的相對路徑編譯器和調用它buffer-file-name這是完整路徑和文件名,包括擴展的擴展:

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

這允許我使用C-c s在Rnw文件上的tex文件和Sweave上運行LaTeX。現在我想包含對bibtex的調用,但爲此我需要文件名和路徑tex文件,而不需要擴展名。我怎樣才能做到這一點?

回答

22

嘗試file-name-sans-extension。有關更多詳細信息,請閱讀手冊的File Name Components部分。

+2

謝謝。 '(file-name-sans-extension buffer-file-name)'工作。 – 2012-01-03 18:05:59

相關問題