Emacs и Pandoc: не могу создать pdf

Я использую GNU Emacs на Mac. После установки последней версии Pandoc я не могу создавать pdf-файлы. Pandoc хорошо работает, когда я использую Терминал. Я думаю, что проблема связана с тем, что Emacs не находит шаблон default.latex. Этот шаблон находится в моем ~/.pandoc/templates.

Это сообщение об ошибке, которое я получаю при попытке создать pdf: pandoc: /usr/local/share/pandoc-1.10.1/data/templates/default.latex: openBinaryFile: does not exist (No such file or directory)

Я не понимаю, почему Emacs пытается найти здесь default.latex.


person sbac    schedule 14.02.2014    source источник
comment
Возможно, ваша последняя версия pandoc имеет новое имя папки, и вам нужно изменить путь, чтобы включить новую папку, содержащую исполняемый файл pandoc. Вот пример того, что я использую для texlive: (setenv "PATH" (concat (getenv "PATH") ":/usr/texbin")) Итак, вам нужно выяснить, куда был установлен ваш новый pandoc.   -  person lawlist    schedule 15.02.2014
comment
@lawlist Мой pandoc v.1.12.3 установлен в /usr/local/bin/pandoc. У меня также более старая версия v.1.10.1 в usr/bin. Pandoc (почти) хорошо работает с Emacs, потому что я могу конвертировать из него файлы. Единственное, что не работает, это конвертация в pdf файлы.   -  person sbac    schedule 16.02.2014
comment
Я бы попробовал поместить это в свой файл .emacs и посмотреть, поможет ли это: (setenv "PATH" (concat (getenv "PATH") ":/usr/local/bin/pandoc"))   -  person lawlist    schedule 16.02.2014
comment
Чтобы быть более полезным, нам нужно знать, как вы даете указание pandoc сгенерировать ваш латексный файл. Например, вы используете pandoc-mode?: joostkremers.github.io/pandoc-mode   -  person lawlist    schedule 16.02.2014
comment
Другая вещь, которую вы можете сделать, это открыть Terminal.app в папке «Приложения» OSX и ввести echo $PATH. Вы можете обнаружить, что ваша старая папка pandoc появляется. Если это так, то вы можете удалить это -- OSX использует различные места для установки пути -- например, в Snow Leopard есть четыре общих места, где эти вещи устанавливаются: /private/etc/paths; /private/etc/paths.d/X11; ~/.bash_profile; и ~/.profile   -  person lawlist    schedule 17.02.2014
comment
@lawlist Я использую режим pandoc. Мой путь (.bash_profile) это /Users/sbacelar2/anaconda/bin:/usr/local/bin:/usr/bin:/bin:usr/sbin:/sbin:/usr/X11/bin:/usr/local/git/bin:/usr/local/texlive/2013/bin/x86_64-darwin. Поскольку у меня две версии pandoc, я изменил порядок usr/local/bin на usr\bin и попытался создать pdf в режиме pandoc. Emacs использовал старую версию pandoc, но не мог создать pdf. Я думаю, что проблема в том, что нет pandoc-1.10.1в usr/local/share/.   -  person sbac    schedule 17.02.2014
comment
Как насчет echo $PATH -- что выводит Terminal.app? .bash_profile — это только один из четырех, которые я упомянул. echo $PATH из Terminal.app предоставит вам полный список всего, что изначально установлено в OSX. Пока вы этим занимаетесь, ищите вероятных подозреваемых на вашем жестком диске для pandoc-1.10.1 — вам нужно отследить, где находится этот параметр. И, пока вы это делаете, также выполните echo $PATH из буфера Emacs, например M-x eshell - результат будет отличаться от того, который вы делаете из Terminal.app.   -  person lawlist    schedule 17.02.2014
comment
@lawlist Я пытался изменить init.el, как вы писали ранее (setenv "PATH"...), и ничего не получилось с emacs. Emacs пытается найти тот же файл в /usr/local/share. Файл, которого не существует.   -  person sbac    schedule 17.02.2014
comment
Путь, который я отправил, является выходом из echo $PATH. Я также сделал echo $PATH из Emacs, но путь тот же, плюс в конце /usr/local/bin/pandocпотому что я изменил init.elfile. Я уже знаю, что у меня есть старая версия pandoc в usr/bin: версия pandoc 1.10.1.   -  person sbac    schedule 17.02.2014


Ответы (2)


(setq pandoc-binary "/usr/local/bin/pandoc")

Этот ответ предполагает, что у вас нет папки с именем pandoc внутри /usr/local/bin/ и что фактический исполняемый файл имеет абсолютный путь /usr/local/bin/pandoc. Если исполняемый файл находится глубже в другой папке или более, соответствующим образом измените путь в этом примере. Код в верхней части этого ответа находится в вашем файле .emacs.

Вы также можете изменить эту переменную в зависимости от предпочитаемой вами настройки:

(setq pandoc-data-dir "~/.emacs.d/pandoc-mode/")
person lawlist    schedule 17.02.2014
comment
Большое спасибо за Вашу помощь. Установка pandoc-binaryв init.el ответила на мой вопрос. - person sbac; 17.02.2014
comment
Отлично - рад помочь. Пожалуйста, поставьте галочку на ответе, чтобы пометить эту тему как решенную. - person lawlist; 17.02.2014

Вы можете получить более общее решение, используя exec-path-from-shell:

Библиотека GNU Emacs для обеспечения того, чтобы переменные среды внутри Emacs выглядели так же, как в пользовательской оболочке.

Просто установите его, потребуйте (только если вы не используете MELPA) в своем файле .emacs и добавьте в него эту строку:

(exec-path-from-shell-initialize)

Дополнительные сведения см. в разделе использования в файле README.

person lifeisfoo    schedule 10.04.2016