Como o org-publish publica automaticamente imagens geradas?

7

Uso org-publish para publicar exportações HTML de arquivos de modo organizacional com bastante frequência para compartilhar documentos com meus colegas de trabalho. No entanto, gero muitos diagramas com plantumle gnuplot. Esses diagramas não são enviados para o servidor remoto quando exporto o arquivo C-c C-e P f.

Minha configuração se parece com:

("org-pastebin"
 :base-directory "~/org/"
 :base-extension "org\\|zsh\\|html\\|png"
 :publishing-directory "/ssh:user@server:~/public_html/org/"
 :publishing-function org-html-publish-to-html
 :with-toc t
 :html-preamble t)

Se eu tiver um arquivo de modo organizacional que se parece com:

* Header
Some prose

#+BEGIN_SRC plantuml :file my-file.png :results raw
...
#+END_SRC

#+RESULTS:
[[file:my-file.png]]

Como posso fazer com que o Emacs publique automaticamente o arquivo vinculado (my-file.png) neste caso? Mesmo se eu publicar todo o projeto, as imagens não serão copiadas.

Lee H
fonte

Respostas:

7

Para publicar projetos que consistem em vários tipos de arquivo, adiciono o seguinte ao meu .emacsarquivo:

(setq org-publish-project-alist
  '(("myprojectorg"
     :base-directory "~/path/to/myproject/"
     :publishing-directory "/ssh:user@server:~/public_html/myproject/"
     :publishing-function org-html-publish-to-html
     :auto-preamble t
     )
    ("myprojectother"
     :base-directory "~/path/to/myproject/"
     :base-extension "css\\|pdf\\|sh"
     :publishing-directory "/ssh:user@server:~/public_html/myproject"
     :publishing-function org-publish-attachment
     )
    ("myprojectimages"
     :base-directory "~/path/to/myproject/images"
     :base-extension "png\\|jpg"
     :publishing-directory "/ssh:user@server:~/public_html/myproject/images"
     :publishing-function org-publish-attachment
     )
    ("myprojectweb" :components("myprojectorg" "myprojectother" "myprojectimages"))
   )
)

Isso define uma entrada myprojectwebque eu uso ao publicar do modo organizacional usando C-c C-e P x. Isso myprojectwebconsiste em:

  • o (s) arquivo (s) organizacional (s), conforme definido em myprojectorg,
  • arquivos de imagem, conforme definido em myprojectimages(que estão em um subdiretório) e
  • outros arquivos (neste caso, PDFs, arquivos CSS e scripts de shell), definidos em myprojectother.

Essas duas últimas entradas são publicadas usando o org-publish-attachmentque não faz nada além de copiar os arquivos para o arquivo publishing-directory.

ph0t0nix
fonte
Testei isso e funciona muito bem, obrigado!
Lee H