Экспортировать файл в режиме оргструктуры как PDF через командную строку?

11

Какие аргументы командной строки я использую, чтобы заставить Emacs экспортировать файл режима org в PDF-файл Beamer? (Я хочу создать Makefileфайл PDF, который запускается пользователем make.)

Я попытался следовать этому ответу, но не смог заставить его работать:

$ emacs --batch foo.org -f org-beamer-export-to-pdf
Symbol's function definition is void: org-beamer-export-to-pdf
$ emacs --batch -l ox-beamer foo.org -f org-beamer-export-to-pdf
Cannot open load file: ox-beamer

Вышеуказанная ошибка происходит из-за того, что файлы в режиме org находятся в пользовательском расположении, а my ~/.emacs.d/init.elне загружается ( --batchподразумевается -qиначе --no-init-file).

Если я скажу Emacs загрузить мой файл инициализации, он будет работать:

$ emacs --batch -l ~/.emacs.d/init.el foo.org -f org-beamer-export-to-pdf

Однако это не работает для других пользователей, которые используют ~/.emacsили ~/.emacs.elвместо ~/.emacs.d/init.el. Я пытался сказать Emacs для загрузки, user-init-fileно это не сработало:

$ emacs --batch --eval '(load user-init-file)' foo.org -f org-beamer-export-to-pdf
Wrong type argument: stringp, nil

Предполагая, что все пользователи могут успешно нажать C-x C-e l Pдля экспорта Beamer PDF при интерактивном использовании Emacs, какая неинтерактивная команда создаст PDF?

Ричард Хансен
источник
eval (require 'org)или что-то в этом роде - ваш файл инициализации выполняет загрузку, которая --batchзапрещает.
Шон Оллред
Попробуйте что-то вроде emacs -u $USER --batch --eval '(message "-----> My user-init-file: "%s" user-init-file)'. Если вы не загружаете свой файл инициализации, вам, вероятно, потребуется ox-beamer.
Mutbuerger
Вы можете найти github.com/fniessen/orgmk полезным.
Иста

Ответы:

8

Следующее работало для меня:

emacs \
    -u "$(id -un)" \
    --batch \
    --eval '(load user-init-file)' \
    foo.org \
    -f org-beamer-export-to-pdf

Спасибо @mutbuerger за подсказку, чтобы пройти, -u <username>чтобы получить user-init-fileопределение.

Ричард Хансен
источник
В моем случае я обнаружил, что мне нужно удалить (load user-init-file)и заменить его определенными (require 'blah)s-выражениями, чтобы он работал (используя emacs 24.5.1).
Марк