Introduction
Since my journey into Google Docs’s Hell I have been getting more reacquainted with org-mode for other purposes as well. Traditionally, I have been writing this blog using Markdown and publishing it with Jekyll. I love Markdown, and while it is fine for most cases, but what better way to gain more experience with org-mode than to blog with it! The best tutorial that I have found so far is this one from the org mode web site: Using org to Blog with Jekyll. One “gotcha” that I have ran into so far, is everything breaking if I include a table of contents (which happens by default when you export to HTML). The simplest solution for this is to add the following to the top of your org flavored file.
#+OPTIONS: toc:nil
This allows the front-matter to be exported properly. I am also choosing not to include section numbering for my posts. So the complete front-matter for this post looks like this:
#+OPTIONS: toc:nil num:nil #+BEGIN_HTML --- layout: post title: "Using org-mode with Jekyll" permalink: /:title/ tags: hacking --- #+END_HTML
Configuration
My jekyll blog project looks like this:
;; File ~/.emacs.d/customizations/setup-org.el ;; ... ;;;; ;; Projects ;;;; ;; levlaz.org Blog (setq org-publish-project-alist '(("levlaz" ;; Path to org files. :base-directory "~/git/levlaz.org/_org" :base-extension "org" ;; Path to Jekyll Posts :publishing-directory "~/git/levlaz.org/_posts/2016/" :recursive t :publishing-function org-html-publish-to-html :headline-levels 4 :html-extension "html" :body-only t )))
Workflow
My current workflow looks something like this:
- Add a new file to
git/levlaz.org/_org/$DATE-$TITLE.org
- Add the front matter shown above
- Blog my heart out
- Check my spelling with
ispell
- Publish the org file with
C-c C-e P p
, this moves the file fromgit/levlaz.org/_org/
to/git/levlaz.org/_posts/2016/$DATE-$TITLE.html
- Build and Deploy my site with my Rakefile:
rake deploy
.
Conclusion
There is definitely some room for improvement here such as macros for dumping in the front-matter, easier deployment, and more automation. I plan on seeing what I can do to make this process a bit smoother for me and update this post when I do.