Exportar um arquivo de modo organizacional como um PDF via linha de comando?

11

Quais argumentos da linha de comando eu uso para o Emacs exportar um arquivo de modo organizacional para um PDF do Beamer? Quero criar um Makefileque produza um PDF quando o usuário executa make.

Tentei seguir esta resposta, mas não consegui fazê-la funcionar:

$ 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

O erro acima vem do fato de que os arquivos do modo organizacional estão em um local personalizado e o meu ~/.emacs.d/init.elnão está carregado ( --batchimplica -qaka --no-init-file).

Se eu disser ao Emacs para carregar meu arquivo init, ele funcionará:

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

No entanto, isso não funciona para outros usuários que usam ~/.emacsou em ~/.emacs.elvez de ~/.emacs.d/init.el. Tentei dizer ao Emacs para carregar, user-init-filemas não funcionou:

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

Supondo que todos os usuários possam pressionar C-x C-e l Pcom êxito para exportar um PDF do Beamer ao usar o Emacs interativamente, que comando não interativo produzirá um PDF?

Richard Hansen
fonte
eval (require 'org)ou algo parecido - seu arquivo init está fazendo algum carregamento que --batché proibido.
Sean Allred
Tente algo parecido emacs -u $USER --batch --eval '(message "-----> My user-init-file: "%s" user-init-file)'. Se você não carregar o seu arquivo init, provavelmente precisará fazê-lo ox-beamer.
mutbuerger
Você pode achar github.com/fniessen/orgmk útil.
Ista

Respostas:

8

O seguinte funcionou para mim:

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

Obrigado a @mutbuerger para que a dica passe -u <username>para ser user-init-filedefinida.

Richard Hansen
fonte
No meu caso, descobri que precisava removê (load user-init-file)-lo e substituí-lo por (require 'blah)expressões s específicas para que funcionasse (usando o emacs 24.5.1).
Mark