¿Exportar un archivo de modo org como PDF a través de la línea de comandos?

11

¿Qué argumentos de línea de comandos utilizo para hacer que Emacs exporte un archivo de modo org a un PDF de Beamer? (Quiero crear un Makefilearchivo PDF que produzca cuando el usuario lo ejecute make).

Intenté seguir esta respuesta, pero no pude hacerlo 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

El error anterior proviene del hecho de que los archivos del modo org están en una ubicación personalizada y mi ~/.emacs.d/init.elno está cargado ( --batchimplica -qalias --no-init-file).

Si le digo a Emacs que cargue mi archivo init, funcionará:

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

Sin embargo, esto no funciona para otros usuarios que usan ~/.emacso ~/.emacs.elno ~/.emacs.d/init.el. Intenté decirle a Emacs que cargara user-init-filepero no funcionó:

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

Suponiendo que todos los usuarios pueden presionar C-x C-e l Pcon éxito para exportar un PDF de Beamer cuando usan Emacs de forma interactiva, ¿qué comando no interactivo producirá un PDF?

Richard Hansen
fuente
eval (require 'org)o algo así: su archivo init está cargando algo que --batchestá prohibiendo.
Sean Allred
Intenta algo como emacs -u $USER --batch --eval '(message "-----> My user-init-file: "%s" user-init-file)'. Si no carga su archivo de inicio, probablemente necesite solicitarlo ox-beamer.
Mutbuerger
Puede encontrar útil github.com/fniessen/orgmk .
Ista

Respuestas:

8

Lo siguiente funcionó para mí:

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

Gracias a @mutbuerger por la sugerencia que debe pasar -u <username>para user-init-filedefinirse.

Richard Hansen
fuente
En mi caso, descubrí que necesitaba eliminarlo (load user-init-file)y reemplazarlo con (require 'blah)expresiones s específicas para que funcione (usando emacs 24.5.1).
Mark