Eine Datei im Organisationsmodus als PDF über die Befehlszeile exportieren?

10

Welche Befehlszeilenargumente verwende ich, um Emacs zum Exportieren einer Datei im Organisationsmodus in eine Beamer-PDF-Datei zu bewegen? (Ich möchte eine erstellen Makefile, die eine PDF-Datei erstellt, wenn der Benutzer ausgeführt wird make.)

Ich habe versucht, dieser Antwort zu folgen , konnte sie aber nicht zum Laufen bringen:

$ 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

Der obige Fehler ist darauf zurückzuführen, dass sich die Dateien im Organisationsmodus an einem benutzerdefinierten Speicherort befinden und my ~/.emacs.d/init.elnicht geladen ist ( --batchimpliziert -qaka --no-init-file).

Wenn ich Emacs anweise, meine Init-Datei zu laden, funktioniert dies:

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

Dies funktioniert jedoch nicht für andere Benutzer, die ~/.emacsoder ~/.emacs.elanstelle von verwenden ~/.emacs.d/init.el. Ich habe versucht, Emacs zum Laden aufzufordern, user-init-fileaber es hat nicht funktioniert:

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

Angenommen, alle Benutzer können erfolgreich drücken C-x C-e l P, um ein Beamer-PDF zu exportieren, wenn Emacs interaktiv verwendet wird. Mit welchem ​​nicht interaktiven Befehl wird ein PDF erstellt?

Richard Hansen
quelle
eval (require 'org)oder so ähnlich - Ihre Init-Datei lädt, --batchwas verboten ist.
Sean Allred
Versuchen Sie etwas wie emacs -u $USER --batch --eval '(message "-----> My user-init-file: "%s" user-init-file)'. Wenn Sie Ihre Init-Datei nicht laden, müssen Sie wahrscheinlich benötigen ox-beamer.
Mutbuerger
Möglicherweise ist github.com/fniessen/orgmk hilfreich.
Ista

Antworten:

8

Folgendes hat bei mir funktioniert:

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

Vielen Dank an @mutbuerger für den Hinweis, der übergeben werden muss -u <username>, um user-init-filedefiniert zu werden.

Richard Hansen
quelle
In meinem Fall stellte ich fest, dass ich es entfernen (load user-init-file)und durch bestimmte (require 'blah)S-Ausdrücke ersetzen musste, damit es funktioniert (unter Verwendung von Emacs 24.5.1).
Mark