2012-03-04 13 views
19

Wiem, że to trochę mniej ważne, ale mnie to dręczyło. Używam trybu Org dla projektu i raczej często eksportuję do formatu PDF lub HTML i zostawia mój katalog zaśmiecony plikami PDF, Tex i HTML. Czy istnieje sposób na eksportowanie w trybie Org do innej lokalizacji, być może podkatalog o nazwie ./exports?Emacs Org-mode - Eksport do innego katalogu?

+0

Zobacz rozwiązanie http://emacacs.stackexchange.com/a/7989/8541 dla czystego rozwiązania, które eksportuje do podfolderu. – Mark

Odpowiedz

17

Oprócz wykorzystywania publikacji modyfikując zmienną org-publish-project-alist jak @ user1248256 zasugerował, można bezpośrednio określić zmienną org-export-publishing-directory wewnątrz pliku:

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

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

Po wyeksportowaniu zostanie umieszczony w katalogu "Export", ale tylko jeśli ten katalog istnieje. Jeśli nie istnieje, pojawi się komunikat o błędzie na konsoli.

+3

Dzięki. To bardziej bezpośrednio odpowiada na moje pytanie, jak sądzę. Jest jednak jedna dziwna rzecz. Jeśli wyeksportuję do HTML lub ASCII, plik zostanie przeniesiony do ./exports, ale jeśli wyeksportuję do TEX (lub PDF), pozostanie w bieżącym katalogu. Może to coś w mojej konfiguracji? – tmilktoast

+1

Właściwie to właśnie widziałem dzisiaj, że to pytanie było na liście dyskusyjnej [org-mode mailing list] (http://lists.gnu.org/archive/html/emacs-orgmode/2012-03/msg00264.html) - chyba że to byłeś tym, który opublikowałeś? – cm2

+0

Nie, nie byłem ja. Będę mieć oko na ten wątek. – tmilktoast

3

Uważam, że można to uzyskać za pomocą org-publish. Dodaj do ciebie plik konfiguracyjny emacs coś takiego:

(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 tego wyrażenia (lub uruchom ponownie emacs), naciśnij C-c C-e X w org-mode, a następnie wybierz projekt z listy.

można uzyskać więcej informacji na http://orgmode.org/worg/org-tutorials/org-publish-html-tutorial.html i http://orgmode.org/manual/Publishing.html#Publishing

+0

Możesz również użyć tego rodzaju konfiguracji, aby wyeksportować części pliku trybu org za pomocą właściwości: http://orgmode.org/worg/org-tutorials/org-latex-export.html#sec-9 – cm2

+0

Dzięki. Mam zamiar spróbować tego w końcu. Myślałem o próbach użycia org-publish, ale nie byłem pewien, czy to pasuje do tego, co robiłem. Nadal się uczę. – tmilktoast

2

To prawdopodobnie nie było to możliwe, gdy sprawa została po raz pierwszy poprosił, ale najprostszym rozwiązaniem byłoby, aby dodać katalog do nieruchomości :EXPORT_FILE_NAME::

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

Podobnie jak w przyjętym odpowiedzi, katalog musi istnieć aby to zadziałało.

+0

Czy próbowałeś tego? To nie działa dla mnie. Próbuję wyeksportować plik PDF do określonego katalogu na wyższym poziomie. Czytałem gdzie indziej, że jest to tylko dla eksportu subtree, a nie całego pliku. Jest to ciągle aktualne? – Jesse

1

Oryginalny pytanie dotyczyło eksportu Org-plików, podczas gdy większość odpowiedzi Powyższe rzeczywiście mamy do czynienia z publikowania, która jest inna koncepcja.

Uważam, że najlepszym sposobem na rozwiązanie problemu spowodowanego przez OP jest dodanie następujących do emacs inicjalizacji pliku (.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. Rozumiem 5-letnie pytanie może już nie mieć związku z OP, ale mam nadzieję, że ludzie szukający podobnych rzeczy skorzystają z tej odpowiedzi.

  2. Jest to niewielka modyfikacja fragmentu kodu znalezione w http://rwx.io/blog/2016/03/11/Org-Export-Configurations/

  3. Oryginalny znaleźć rozwiązanie w powyższym blogu pozwala na utworzenie różnych katalogach dla każdego eksportowanego pliku PDF. Jeśli jednak celem jest uniknięcie sytuacji, w której katalog "jest zaśmiecony plikami PDF, Tex i HTML", myślę, że najlepiej jest mieć tylko jeden katalog zawierający wyeksportowane pliki wszystkich formatów, co jest istotą modyfikacji, którą zaoferowałem. powyżej.


Edycja: manualna emacs (https://www.gnu.org/software/emacs/manual/html_node/elisp/Porting-old-advice.html#Porting-old-advice) stwierdza, że ​​mechanizm defadvice został przedawniony przez nowe advice-add.Więc tutaj jest snipet kod z takim samym skutkiem, stosując zalecaną 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) 

jak wcześniej, to powinno być umieszczone w pliku .emacs.

Powiązane problemy