Mengekspor file mode-org sebagai PDF melalui baris perintah?

11

Argumen baris perintah apa yang saya gunakan untuk membuat Emacs untuk mengekspor file mode-org ke Beamer PDF? (Saya ingin membuat Makefileyang menghasilkan PDF saat pengguna menjalankan make.)

Saya mencoba mengikuti jawaban ini tetapi tidak berhasil:

$ 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

Kesalahan di atas berasal dari kenyataan bahwa file mode-org berada di lokasi khusus dan saya ~/.emacs.d/init.eltidak dimuat ( --batchmenyiratkan -qalias --no-init-file).

Jika saya memberi tahu Emacs untuk memuat file init saya, itu akan berfungsi:

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

Namun, ini tidak berfungsi untuk pengguna lain yang menggunakan ~/.emacsatau ~/.emacs.elbukan ~/.emacs.d/init.el. Saya mencoba memberi tahu Emacs untuk memuat user-init-filetetapi tidak berhasil:

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

Dengan asumsi semua pengguna dapat berhasil menekan C-x C-e l Puntuk mengekspor Beamer PDF saat menggunakan Emacs secara interaktif, perintah non-interaktif apa yang akan menghasilkan PDF?

Richard Hansen
sumber
eval (require 'org)atau sesuatu seperti itu - file init Anda melakukan beberapa pemuatan yang --batchdilarang.
Sean Allred
Coba sesuatu seperti emacs -u $USER --batch --eval '(message "-----> My user-init-file: "%s" user-init-file)'. Jika Anda tidak memuat file init Anda, Anda mungkin perlu meminta ox-beamer.
mutbuerger
Anda mungkin menemukan github.com/fniessen/orgmk berguna.
Ista

Jawaban:

8

Berikut ini bekerja untuk saya:

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

Terima kasih buka @mutbuerger untuk petunjuk agar lulus -u <username>agar bisa user-init-filedidefinisikan.

Richard Hansen
sumber
Dalam kasus saya, saya menemukan bahwa saya perlu menghapus (load user-init-file)dan menggantinya dengan (require 'blah)ekspresi s khusus agar bisa berfungsi (menggunakan emacs 24.5.1).
Tandai