2014-11-21 54 views
2

我使用Emacs和AUCTeX,我想向TeX-command-list,即makeglossaries添加一個命令。 我refered在手冊和走到這一步:在.emacs初始化文件中擴展列表

(eval-after-load "tex" 
    '(add-to-list 'TeX-command-list 
     '("Makeglossaries" "makeglossaries %t" TeX-run-command nil 
     (latex-mode) 
     :help "Run makeglossaries script, which will choose xindy or makeindex") t)) 

然而,當我與CC CC的emacs執行此我得到

運行Makeglossaries' on nameOfFile」與``makeglossaries nameOfFile.tex' 唐將tex文件傳遞給makeword: 或者省略擴展來製作所有詞彙表,或者指定其中一個詞彙表文件,例如nameOfFile.tex.glo,以製作該詞彙表。

消息非常清晰。我不知何故必須改變%t,所以它省略了「.tex」,但我不知道該怎麼做,或者在哪裏查找它。這是elisp代碼嗎?不想僅僅爲此學習語言。

有人知道我該如何解決這個問題?

感謝它推進!

經過多一點研究後,我發現我可以用%s代替%t。 %s顯然是沒有擴展名的文件名,儘管我不知道它在哪裏定義。無論如何這適用於我:

(eval-after-load "tex" '(add-to-list 'TeX-command-list 
     '("Makeglossaries" "makeglossaries %s" TeX-run-command nil 
     (latex-mode) 
     :help "Run makeglossaries script, which will choose xindy or makeindex") t)) 

回答

1

是的,這是elisp。

您可以測試與下面的測試擴展:

(equal ".tex" (substring "file.tex" -4)) 

要刪除它,再次使用substring

(substring "file.tex" 0 -4) 

負數數從右邊的位置。