Ma config d'org-mode pour la publication de ce site.

Préambule

Voici ma config d'org-mode temporaire pour la publication de ce site. Elle est actuellement en cours d'étude :þ

J'ai en effet plein de choses que je veux mettre en place. J'y reviendrai plus tard. Un certain nombre de choses ne fonctionnent également pas. (It's not a bug, it's a feature ;]) Il va me falloir (comme tout le monde) plus de temps…

Au passage, pour avoir la dernière version d'org-mode dans debian, pour utiliser les postamble et autres nouveautés et ne pas se demander pourquoi ça ne marche pas (suivez mon regard… <_<) :

su -c "aptitude install org-mode"

Et pour que les begin_src soient en couleur une fois l'export effectué :

htmlize : su -c "aptitude install emacs-goodies-el"

Dans customize

Tout d'abord, pour la configuration des choses qui ne devraient pas changer d'un « site » à l'autre, j'ai mis ça dans customize. Je sais pas ce que seront les autres sites (ni s'il y en aura). Le postamble risque en fait de changer… Bon, ok, j'ai dû plutôt mettre le plus de choses possibles pour ne pas trop alourdir mon .emacs avec M-x org-customize. Pas d'explications à donner, le nom des variables étant suffisamment explicite (sinon, dans emacs C-h v puis Enter en étant positionné sur le nom de la variable) :

  '(org-export-author-info nil)
 '(org-export-creator-info nil)
 '(org-export-headline-levels 6)
 '(org-export-html-link-home "index.html")
 '(org-export-html-link-up "sitemap.html")
 '(org-export-html-postamble t)
 '(org-export-html-postamble-format (quote (("en" "<p class=\"date\">Date: %d</p><p class=\"creator\">Generated by %c - <a href=\"#\" onClick='show_org_source()'>Show Org source</a> (<a href=\"#\" onClick='show_htmlized_source()'>htmlized</a>)</p>
<p class=\"style\">CSS inspired by <a href=\"http://tontof.net/\">Tontof</a>, colors by <a href=\"http://http://theme.wordpress.com/themes/chaoticsoul/\">Chaotic Soul</a></p>
<p class=\"xhtml-validation\">%v</p>
"))))
 '(org-export-html-preamble-format (quote (("en" "<script type=\"text/javascript\">
    function rpl(expr,a,b) {
      var i=0
      while (i!=-1) {
         i=expr.indexOf(a,i);
         if (i>=0) {
            expr=expr.substring(0,i)+b+expr.substring(i+a.length);
            i+=b.length;
         }
      }
      return expr
    }

    function show_org_source(){
       document.location.href = rpl(document.location.href,\"html\",\"org\");
    }
    function show_htmlized_source(){
       document.location.href = rpl(document.location.href,\"html\",\"org.html\");
    }
</script>"))))
 '(org-export-html-style "<link rel=\"stylesheet\" type=\"text/css\" href=\"http://fredtantini.free.fr/other/mystyle.css\" />")
 '(org-export-html-style-include-default nil)
 '(org-export-section-number-format (quote ((("1" ".")) . ". -")))
 '(org-export-with-section-numbers nil)
 '(org-export-with-toc nil)
 '(org-log-done (quote time) nil nil "quand on passe en DONE, timestamp")
 '(org-publish-sitemap-sort-files (quote alphabetically))
 '(org-publish-timestamp-directory "~/.config/org-timestamps/")
 '(org-use-sub-superscripts nil)

Dans mon .emacs

Il reste là la configuration du fameux org-publish-project-alist :

;;org-export/publish
(setq org-publish-project-alist
      '(("larticles"
         :base-directory "/data/Donnees/Sites/fredtantini/"  ;le dossier où se trouvent mes fichiers
         :base-extension "org"                               ;qu'exporter
         :publishing-directory "/var/www/FT/"                ;où exporter
         :publishing-function org-publish-org-to-html        ;comment exporter
         :auto-sitemap t                                     ;on crée un fichier sitemap pour avoir la liste des fichiers
         :sitemap-filename "sitemap.org"                     ;le nom du sitemap
         :sitemap-title "Articles Index"                     ;son titre
         :sitemap-style tree                                 ;l'autre choix : list
         :recursive t                                        ;on parcourt les sous-dossiers
         )

        ("limages"
         :base-directory "/data/Donnees/Sites/fredtantini/"  
         :base-extension "jpg\\|gif\\|png"                   
         :publishing-directory "/var/www/FT/images/"         
         :publishing-function org-publish-attachment         
         :recursive t)

        ("lother"
         :base-directory "/data/Donnees/Sites/fredtantini/other/"
         :base-extension "css\\|el"
         :publishing-directory "/var/www/FT/other/"
         :publishing-function org-publish-attachment)

        ("lft" :components ("larticles" "limages" "lother"))


        ("rarticles"
         :base-directory "/data/Donnees/Sites/fredtantini/"
         :base-extension "org"
         :exclude "^00"                                                        ;les fichiers qui commencent par 00 sont exclus
         :publishing-directory "/ftp:fredtantini@fredtantini.free.fr:~/"       ;où exporter (par ftp, avec tramp)
         :publishing-function (org-publish-org-to-html org-publish-org-to-org) ;on publie le .html, et le .org
         :plain-source t                                                       ;on publie le source tel quel
         :htmlized-source t                                                    ;et aussi comme il apparait dans mon emacs
         :auto-sitemap t
         :sitemap-filename "sitemap.org"
         :sitemap-title "Articles Index"
         :sitemap-style tree
         :recursive t
         )

        ("rimages"
         :base-directory "/data/Donnees/Sites/fredtantini/images/"
         :base-extension "jpg\\|gif\\|png"
         :publishing-directory "/ftp:fredtantini@fredtantini.free.fr:~/images/"
         :publishing-function org-publish-attachment
         :recursive t)

        ("rother"
         :base-directory "/data/Donnees/Sites/fredtantini/other/"
         :base-extension "css\\|el"
         :publishing-directory "/ftp:fredtantini@fredtantini.free.fr:~/other/"
         :publishing-function org-publish-attachment)

        ("rft" :components ("rarticles" "rimages" "rother"))

        ("all" :components ("lft" "rft")))
      )

Petites explications : l pour local qui va dans var/www et r pour remote qui va sur ce site (en utilisant tramp). Pas trop de différences entre les deux, si ce n'est qu'en local, je mets les futurs articles dans des fichiers qui commencent par 00. De plus, en local, je n'ai pas besoin des sources de la page, donc pas d'options plain-source et htmlize-source.

Autres billets

Date: <2012-11-10>

Generated by Emacs 24.3.1 (Org mode 8.2.4) - Show Org source (htmlized)

CSS inspired by Tontof, colors by Chaotic Soul

Validate