2012-03-04 8 views
19

Sé que esto es un poco menor, pero me ha estado molestando. Estoy usando Org-mode para un proyecto y tiendo a exportar a PDF o HTML con bastante frecuencia y deja mi directorio lleno de archivos PDF, Tex y HTML. ¿Hay alguna forma de exportar Org-mode a otra ubicación, tal vez un subdirectorio llamado ./exports?Emacs Org-mode - ¿Exportar a otro directorio?

+0

Consulte http://emacs.stackexchange.com/a/7989/8541 para obtener una solución limpia que exporta a una subcarpeta. – Mark

Respuesta

17

Además de la utilización de la edición mediante la modificación de la variable de org-publish-project-alist como @ user1248256 sugerido, puede especificar directamente la variable org-export-publishing-directory dentro de su archivo:

#+bind: org-export-publishing-directory "./exports" 

* This is a test headline 
Some text here. This should be exported to the "./exports" directory. 

Al exportar, se colocará en el directorio "exports", pero solo si ese directorio existe. Si no existe, recibirá un mensaje de error en la consola.

+3

Gracias. Esto más directamente responde mi pregunta, creo. Sin embargo, hay una cosa extraña. Si exporto a HTML o ASCII, el archivo va a ./exports, pero si exporto a TEX (o PDF) permanece en el directorio actual. Tal vez es algo en mi configuración? – tmilktoast

+1

En realidad, acabo de ver que esta pregunta estaba en la lista de correo [org-mode] (http://lists.gnu.org/archive/html/emacs-orgmode/2012-03/msg00264.html), a menos que ¿fuiste ese publicado? – cm2

+0

No, no era yo. Voy a vigilar ese hilo. – tmilktoast

3

Creo que puede obtenerlo con org-publish. Añadir a que la configuración de emacs archivo algo así:

(setq org-publish-project-alist 
    '(("html" 
    :base-directory "~/org/" 
    :base-extension "org" 
    :publishing-directory "~/org/exports" 
    :publishing-function org-publish-org-to-html) 
    ("pdf" 
    :base-directory "~/org/" 
    :base-extension "org" 
    :publishing-directory "~/org/exports" 
    :publishing-function org-publish-org-to-pdf) 
    ("all" :components ("html" "pdf")))) 

Eval esta expresión (o reinicie emacs), pulse C-c C-e X en org-mode, a continuación, elegir un proyecto a partir de una lista.

Se puede ver más información en http://orgmode.org/worg/org-tutorials/org-publish-html-tutorial.html y http://orgmode.org/manual/Publishing.html#Publishing

+0

También puede usar este tipo de configuración para exportar partes de un archivo de modo orgánico usando propiedades: http://orgmode.org/worg/org-tutorials/org-latex-export.html#sec-9 – cm2

+0

Gracias. Voy a intentar esto eventualmente. Había pensado en intentar usar org-publish, pero no estaba seguro de si se ajustaba a lo que estaba haciendo. Todavía estoy aprendiendo. – tmilktoast

2

Esto probablemente no era posible cuando se le preguntó por primera vez la pregunta, pero la solución más simple sería añadir el directorio a la propiedad :EXPORT_FILE_NAME::

:PROPERTIES: 
:EXPORT_FILE_NAME: exports/<filename> 
:END: 

Al igual que en la respuesta aceptada, debe existir el directorio para que esto funcione

+0

¿Has probado esto? A mi no me sirvió. Estoy tratando de exportar el pdf a un directorio específico de un nivel. Había leído otra cosa que dice que esto es solo para la exportación del subárbol y no para todo el archivo. ¿Sigue siendo el caso? – Jesse

1

La pregunta original que se refiere a la exportación de de org-archivos, mientras que la mayoría de las respuestas anteriores en realidad tienen que ver con la publicación de , que es un concepto diferente.

Creo que la mejor manera de resolver el problema planteado por la OP es añadir lo siguiente a su archivo de inicialización de emacs (.emacs):

(defadvice org-export-output-file-name (before org-add-export-dir activate) 
    "Modifies org-export to place exported files in a different directory" 
    (when (not pub-dir) 
     (setq pub-dir "exported-org-files") 
     (when (not (file-directory-p pub-dir)) 
     (make-directory pub-dir)))) 

PS:

  1. me doy cuenta una pregunta de 5 años puede que ya no sea relevante para el OP, pero es de esperar que las personas que busquen cosas similares se beneficien con esta respuesta.

  2. Ésta es una ligera modificación de un fragmento de código que se encuentra en http://rwx.io/blog/2016/03/11/Org-Export-Configurations/

  3. La solución original que se encuentra en el blog anterior permite la creación de diferentes directorios para cada formato exportado. Sin embargo, si el objetivo es evitar tener en el directorio "lleno de archivos PDF, Tex y HTML", creo que es mejor tener solo un directorio que contenga archivos exportados de todos los formatos, que es la esencia de la modificación que ofrecí encima.


Editar: El manual emacs (https://www.gnu.org/software/emacs/manual/html_node/elisp/Porting-old-advice.html#Porting-old-advice) establece que el mecanismo de defadvice se hizo obsoleto por el nuevo advice-add.Así que aquí es una snipet código con el mismo efecto, mediante el advice-add recomendada:

(defun org-export-output-file-name-modified (orig-fun extension &optional subtreep pub-dir) 
    (unless pub-dir 
    (setq pub-dir "exported-org-files") 
    (unless (file-directory-p pub-dir) 
     (make-directory pub-dir))) 
    (apply orig-fun extension subtreep pub-dir nil)) 
(advice-add 'org-export-output-file-name :around #'org-export-output-file-name-modified) 

Al igual que antes, esto se debe colocar en el fichero .emacs.

Cuestiones relacionadas