2012-03-04 13 views
19

So che questo è un po 'minore, ma mi ha infastidito. Uso la modalità Org per un progetto e tendo ad esportare in formato PDF o HTML piuttosto frequentemente e lascia la mia directory piena di file PDF, Tex e HTML. C'è un modo per esportare la modalità Org in un'altra posizione, forse una sottodirectory chiamata ./exports?Emacs Org-mode - Esportare in un'altra directory?

+0

Vedere http://emacs.stackexchange.com/a/7989/8541 per una soluzione pulita che esporta in una sottocartella. – Mark

risposta

17

Oltre all'uso di pubblicazione modificando la variabile org-publish-project-alist come @ user1248256 suggerito, è possibile specificare direttamente la variabile org-export-publishing-directory all'interno del file:

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

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

All'esportazione verrà inserito nella directory "exports", ma solo se tale directory esiste. Se non esiste, riceverai un messaggio di errore nella console.

+3

Grazie. Questo risponde più direttamente alla mia domanda, penso. C'è una cosa strana però. Se esporto in HTML o ASCII, il file va a ./exports, ma se esporto in TEX (o PDF) rimane nella directory corrente. Forse è qualcosa nella mia configurazione? – tmilktoast

+1

In realtà, ho appena visto oggi che questa domanda era nella [mailing list org-mode] (http://lists.gnu.org/archive/html/emacs-orgmode/2012-03/msg00264.html) - a meno che sei stato postato? – cm2

+0

No, non ero io. Terrò d'occhio quel filo. – tmilktoast

3

Credo che lo si possa ottenere con org-publish. Aggiungi a te la configurazione emacs file di qualcosa di simile:

(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 questa espressione (o riavviare Emacs), premere C-c C-e X a org-mode, quindi scegliere un progetto da un elenco.

È possibile visualizzare ulteriori informazioni a http://orgmode.org/worg/org-tutorials/org-publish-html-tutorial.html e http://orgmode.org/manual/Publishing.html#Publishing

+0

È inoltre possibile utilizzare questo tipo di configurazione per esportare parti di un file in modalità org utilizzando le proprietà: http://orgmode.org/worg/org-tutorials/org-latex-export.html#sec-9 – cm2

+0

Grazie. Ho intenzione di provare questo alla fine. Avevo pensato di provare a utilizzare org-publish, ma non ero sicuro se fosse adatto a quello che stavo facendo. Sto ancora imparando. – tmilktoast

2

Questo probabilmente non è stato possibile quando la domanda è stato chiesto prima, ma la soluzione più semplice sarebbe quella di aggiungere la directory alla proprietà :EXPORT_FILE_NAME::

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

Proprio come nella risposta accettata, la directory deve esistere in modo che funzioni.

+0

Hai provato questo? Non ha funzionato per me. Sto cercando di esportare il pdf in una directory specifica di un livello. Avevo letto altrove, dove si tratta solo dell'esportazione sottostringa e non dell'intero file. È ancora così? – Jesse

1

La domanda iniziale di cui al esportazione di org-file, mentre la maggior parte delle risposte di cui sopra in realtà hanno a che fare con la pubblicazione , che è un concetto diverso.

Credo che il modo migliore per risolvere il problema posto dal PO è quello di aggiungere quanto segue al file di inizializzazione 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. mi rendo conto una domanda di 5 anni potrebbe non essere più pertinente al PO, ma si spera che le persone alla ricerca di materiale simile trarranno beneficio da questa risposta.

  2. Questa è una lieve modifica di un frammento di codice trovato in http://rwx.io/blog/2016/03/11/Org-Export-Configurations/

  3. La soluzione originale trovata nel blog sopra consente per la creazione di directory differenti per ciascun formato esportato. Tuttavia, se l'obiettivo è evitare di avere la directory "piena di file PDF, Tex e HTML", penso che sia meglio avere una sola directory contenente i file esportati di tutti i formati, che è l'essenza della modifica che ho offerto sopra.


Edit: Il manuale emacs (https://www.gnu.org/software/emacs/manual/html_node/elisp/Porting-old-advice.html#Porting-old-advice) stabilisce che il meccanismo defadvice è stata resa obsoleta dalla nuova advice-add.Ecco uno snipet codice con lo stesso effetto, utilizzando la raccomandata advice-add:

(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) 

Come prima, questo deve essere posto nel file .emacs.

Problemi correlati