1 ;;; my-publish.el --- Publish blog with org-mode -*- lexical-binding: t; -*-
3 ;; Copyright (C) 2017 Peng Li
5 ;; Author: Peng Li <seudut@gmail.com>
6 ;; Keywords: lisp, abbrev
8 ;; This program is free software; you can redistribute it and/or modify
9 ;; it under the terms of the GNU General Public License as published by
10 ;; the Free Software Foundation, either version 3 of the License, or
11 ;; (at your option) any later version.
13 ;; This program is distributed in the hope that it will be useful,
14 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
15 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 ;; GNU General Public License for more details.
18 ;; You should have received a copy of the GNU General Public License
19 ;; along with this program. If not, see <http://www.gnu.org/licenses/>.
23 ;; Using this emacs script to publish the blog org file
27 ;; (defconst root-dir "~/Private/blog/")
33 ;; To prevent inline-css when exporting html. will use external css
34 (setq org-html-htmlize-output-type 'css)
38 "<link rel='stylesheet' href='/css/my.css' />\n"
39 "<link rel='stylesheet' href='/css/code.css' />"))
43 "<header id= 'banner'>"
44 "<a class=\"title\"href= '/' >Peng Li</a>"
46 "<li><a href= '/about.html' >About</a></li>"
47 "<li><a href= '/posts/sitemap.html' >Blog</a></li>"
48 "<li><a href= '/index.html' >Home</a></li>"
56 ;; "<span><a href= \"http://orgmode.org\"/>Org-mode </a>" (org-version) "</span>"))
60 org-html-creator-string))
62 (defun blog-setup-project-alist (root-dir &optional output-dir)
63 "Set project alist. `output-dir' is the directory of publish-directory.
64 `root-dir' is the root directory of blog repository."
65 (unless (> (length output-dir) 0)
66 (setq output-dir (concat root-dir "/_site/")))
67 (message "Blog dir is: %s\nOut dir is: %s"
70 (setq org-publish-project-alist
73 :base-directory ,root-dir
75 :publishing-directory ,output-dir
77 :publishing-function org-html-publish-to-html
81 ;; disable home/up div
82 :html-home/up-format ""
87 :html-head-include-default-style nil
88 :html-head-include-scripts nil
89 :html-head-extra ,blog-extra-head
90 :html-preamble ,blog-header
91 :html-postamble ,blog-footer
93 ;; other generic options
98 :base-directory ,(concat root-dir "/posts")
100 :publishing-directory ,(concat output-dir "/posts")
102 :publishing-function org-html-publish-to-html
107 :html-home/up-format ""
110 ;; Add css file, preamble and posamble
112 :html-head-include-default-style nil
113 :html-head-include-scripts nil
114 :html-head-extra ,blog-extra-head
115 :html-preamble ,blog-header
116 :html-postamble ,blog-footer
120 :sitemap-filename "sitemap.org"
121 :sitemap-title "Sitemap"
123 ;; other generic options
124 :with-toc nil ; table of contents
128 :base-directory ,(concat root-dir "/css")
130 :publishing-directory ,(concat output-dir "/css")
131 :publishing-function org-publish-attachment
134 :base-directory ,(concat root-dir "/cgi-bin")
136 :publishing-directory ,(concat output-dir "/cgi-bin")
137 :publishing-function org-publish-attachment
139 ("blog" :components ("blog-pages" "blog-posts" "blog-css" "blog-cgi")))))
141 (provide 'my-publish)
142 ;;; publish.el ends here