2014-11-21 4 views
2

Я использую Emacs с AUCTeX, и я хочу добавить команду в список команд TeX, а именно makeglossaries. я refered к руководству и получил это далеко:Расширение списка в файле .emacs init

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

Однако, когда я исполню это в Emacs с Cc Cc я получаю

Запуск Makeglossaries' on nameOfFile»с` `makeglossaries nameOfFile.tex '' Дон 't передать файл tex в makeglossaries: либо опустить расширение, чтобы сделать все глоссарии, либо указать один из файлов глоссария, например nameOfFile.tex.glo, чтобы сделать только этот глоссарий.

Сообщение довольно ясное. Я как-то должен изменить% t, поэтому он пропускает «.tex», однако я не знаю, как это сделать или где его искать. Этот код elisp? Не хочу изучать язык только для этого.

Кто-нибудь знает, как я могу исправить эту проблему?

Спасибо заранее!

После небольшого исследования я обнаружил, что могу заменить% t% s. % 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) 

Отрицательные числа отсчёт с правой стороны.