Експортувати файл org-режиму у форматі 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-режиму знаходяться у власному місці, а мій ~/.emacs.d/init.elне завантажується ( --batchмається на увазі -qака --no-init-file).

Якщо я скажу Emacs завантажити мій файл init, він буде працювати:

$ 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щоб експортувати PDF Beamer при інтерактивному використанні Emacs, яка неінтерактивна команда створить PDF?


eval (require 'org)або щось подібне - ваш файл init виконує деяке завантаження, яке --batchзабороняє.
Шон Аллред

Спробуйте щось на кшталт emacs -u $USER --batch --eval '(message "-----> My user-init-file: "%s" user-init-file)'. Якщо ви не завантажуєте свій файл init, вам, ймовірно, потрібно вимагати 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).
Марк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.