3

.emacsファイルで次のコードを使用して、デフォルトの公開動作を設定します。組織のベースディレクトリを、異なるコンピュータの異なる場所に配置しました。

;; define machine specific directories storing my org files
(cond ((system-name-is-home) (setq org-dir "/data/org"))
      ((system-name-is-work) (setq org-dir "~/org")))

したがって、をハードコーディングするのではなく、変数を使用して指定:base-directoryしたいと思います。どうやってやるの?org-dir"~/org"

(require 'org-publish)
(setq org-publish-project-alist
      '(
        ("org-notes"
         :base-directory "~/org"
         :base-extension "org"
         :publishing-directory "~/tmp/"
         :recursive t
         :publishing-function org-publish-org-to-html
         :headline-levels 4
         :auto-preamble t

         :auto-sitemap t          ; Generate sitemap.org automagically ...
         :sitemap-filename "sitemap.org" ; ... call it sitemap.org (the default) ...
         :sitemap-title "Sitemap" ; ... with title 'Sitemap'.
         )
        ("org-static"
         :base-directory "~/org"
         :base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf"
         :publishing-directory "~/tmp/"
         :recursive t
         :publishing-function org-publish-attachment
         )
        ("org" :components ("org-notes" "org-static"))
        ))
4

1 に答える 1

5

これを行う 1 つの方法は、`(バッククォート) と,(カンマ) を使用することです。GNU Emacs Lisp リファレンス マニュアルから、

逆引用符構造を使用すると、リストを引用できますが、そのリストの要素を選択的に評価できます。最も単純なケースでは、特殊な形式と同じですquote。(...) 逆引用符の引数内の特別なマーカー ' ,' は、定数ではない値を示します。Emacs Lisp エバリュエーターは ' ,' の引数を評価し、その値をリスト構造に入れます。

したがって、次のようにプログラムを書くことができます。

(require 'org-publish)
(setq org-publish-project-alist
      `(                              ; XXX: backquote
        ("org-notes"
         :base-directory ,org-dir     ; XXX: comma
         :base-extension "org"
         :publishing-directory "~/tmp/"
         :recursive t
         :publishing-function org-publish-org-to-html
         :headline-levels 4
         :auto-preamble t

         :auto-sitemap t          
         :sitemap-filename "sitemap.org" 
         :sitemap-title "Sitemap"
         )
        ("org-static"
         :base-directory ,org-dir     ; XXX: comma
         :base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf"
         :publishing-directory "~/tmp/"
         :recursive t
         :publishing-function org-publish-attachment
         )
        ("org" :components ("org-notes" "org-static"))
        ))
于 2012-08-09T02:09:11.220 に答える