tutorial org emacs org-mode

emacs - tutorial - Exportación por lotes de archivos de modo org desde la línea de comando



org mode tutorial (3)

Supongamos que tengo en un directorio determinado varios archivos de org-mode : foo1.org , foo2.org , etc. Me gustaría tener un script (tal vez un makefile) que pudiera invocar algo como

$ generate-pdfs

y se foo1.pdf , foo2.pdf , etc.

Pensé que algo como emacs --batch --eval <MAGIC> es un buen comienzo, pero no conozco la magia.

Una solución que está únicamente dentro de emacs podría ser de interés también.


Como dijo, Emacs tiene la opción --batch para realizar operaciones con Emacs desde el shell. Además de eso, puede usar el indicador -l para cargar el código de Emacs Lisp desde un archivo y ejecutarlo, y el indicador -f para ejecutar una sola función Lisp.

Aquí hay un ejemplo básico, que exporta un solo archivo de modo org a HTML:

emacs myorgfile.org --batch -f org-html-export-to-html --kill

Tal vez quiera algo más avanzado como exportar / publicar un proyecto completo en modo org. No tengo código de ejemplo para eso, pero no debería ser demasiado complicado.

También tengo un Makefile de muestra que escribí hace algún tiempo para exportar todos los archivos de modo org en el directorio a HTML (y también copiar los archivos HTML a otro directorio):

OUT_DIR=/some/output/dir/html # Using GNU Make-specific functions here FILES=$(patsubst %.org,$(OUT_DIR)/%.html,$(wildcard *.org)) .PHONY: all clean install-doc all: install-doc install-doc: $(OUT_DIR) $(FILES) $(OUT_DIR): mkdir -v -p $(OUT_DIR) %.html: %.org emacs $< --batch -f org-html-export-to-html--kill $(OUT_DIR)/%.html: %.html install -v -m 644 -t $(OUT_DIR) $< rm $< clean: rm *.html

EDITAR:

Con Org-mode 8 y el nuevo motor de exportación, la función para exportar HTML ha cambiado.

Para hacer que los ejemplos anteriores funcionen con Org 7 o anterior, reemplace org-html-export-to-html con org-export-as-html .


Espero publicar (para el final de este fin de semana) OrgMk, un conjunto de Makefile y scripts de Bash independientes (utilizables también en Cygwin) ¡solo para hacer eso! Más aún: generación de HTML, Ascii, Beamer, etc.

Lo encontrará en mi cuenta de GitHub: https://github.com/fniessen/ (donde ya tengo archivos de configuración de Emacs, temas de color y otras cosas, como una refcard de Org Babel - en progreso).


Marque algunos archivos org en dired y llame a esto:

(defun dired-org-to-pdf () (interactive) (mapc (lambda (f) (with-current-buffer (find-file-noselect f) (org-latex-export-to-pdf))) (dired-get-marked-files)))

Si sabe qué es async, ajuste la llamada, ya que puede demorar un poco.

actualizar:

Aquí hay una versión que combina el asombroso enfoque dired con el cojo otro :)

(defun dired-org-to-pdf () (interactive) (let ((files (if (eq major-mode ''dired-mode) (dired-get-marked-files) (let ((default-directory (read-directory-name "dir: "))) (mapcar #''expand-file-name (file-expand-wildcards "*.org")))))) (mapc (lambda (f) (with-current-buffer (find-file-noselect f) (org-latex-export-to-pdf))) files)))