Org Mode publishing workflow for Sketched Books collection
Posted: - Modified: | emacs, org, publishingI want to publish things in chunks that are bigger and more logical than blog posts, so I've been experimenting with my ZIP/PDF/EPUB/MOBI workflow.
Org Mode, Calibre, and Vagrant are terrific tools. Org Mode lets me write easy-to-modify source that I can export to different formats, like HTML and LaTeX (with the Beamer package), which lets me use PdfLatex to convert to PDF. Calibre converts HTML to EPUB and MOBI. Since tools can be difficult to set up on Windows, I use Vagrant to set up a virtual machine running Linux and I share my working directory with it.
multiple-cursors
was so useful when I was wrangling the directory listing into the right format for Org. I'm glad I learned how to use it!
Here's a Makefile I put together that simplifies the process for me:
all: index.html sketched-books.epub sketched-books.mobi ebook.pdf sketched-books.zip clean: rm -f *.dvi *.log *.nav *.out *.tex *.snm *.toc distclean: clean rm -f Sketched\ Books.zip index.html *.epub *.pdf *.mobi Sketched\ Books.zip: *.png index.html (cd ..; zip sketched-books/sketched-books.zip sketched-books/* -i *.css -i *.png -i *.html) index.html: index.org emacs --batch -l build.el index.org -f org-html-export-to-html --kill cp index.html index.tmp sed -e "s/org-ul/org-ul small-block-grid-3/" -e 's/div id="content"/div id="content" class="columns"/' -e 's/class="status"/class="status columns"/' index.tmp > index.html rm -f index.html~ index.tmp ebook.html: ebook.org emacs --batch -l build.el ebook.org -f org-html-export-to-html --kill cover-base.png: montage *Sketched*.png -geometry -30-30 -thumbnail x400 -tile 6x5 cover.png sketched-books.epub: ebook.html ebook-convert ebook.html sketched-books.epub --cover cover.png --authors "Sacha Chua" --language "English" sketched-books.mobi: ebook.html ebook-convert ebook.html sketched-books.mobi --cover cover.png --authors "Sacha Chua" --language "English" ebook.tex: ebook.org emacs --batch -l build.el ebook.org -f org-beamer-export-to-latex --kill ebook.pdf: ebook.tex pdflatex ebook.tex cp ebook.pdf sketched-books.pdf rm ebook.pdf
And here's a very simple build.el:
(require 'package) (package-initialize) (require 'ox-beamer) (setq org-html-validation-link nil) (setq org-export-with-section-numbers nil) (setq backup-directory-alist '(("." . nil)))
This assumes I've already set up the environment by installing the latest Org from MELPA.
You can check out the index.org and ebook.org I use, too.
I'm not quite sure about the MOBI output yet. I have to test it on a Kindle, or in the app on my tablet. Most of the things display fine on my computer, though. Hooray!
Neat, huh? I want to get into the habit of making and also making it easy for me to update these things. You can check out the results at http://sketchedbooks.com/collection .
Someday I might even figure out how to use the Gumroad API to publish updated resources automatically. Wouldn't that be neat? In the meantime, I'll just have to replace them myself.
I like giving people the ability to choose which files to download. If I get annoyed with replacing multiple files, though, I might change this to one large ZIP that has the images, PDF, EPUB, and MOBI.
5 comments
Grant Rettke
2014-12-31T16:08:25ZGreat to learn of this workflow.
Sudhir Khanger
2014-12-31T16:56:43ZDo you use Emacs or the WordPress editor to write your posts?
sachac
2015-01-01T14:37:11ZI generally use Emacs with Org2Blog because I like Org Mode much more for outlining and writing, but I do the image insertions in Wordpress because I like the results there better. I could probably modify the org2blog code to handle image insertions the way I want them, though. Hmm...
JoelMcCracken
2015-01-01T01:02:24ZI have so far avoided doing very much with make, and typically rely upon Rake. Any thoughts on the Makefile choice?
sachac
2015-01-01T14:36:10ZJoel: Oh, just familiarity. You’re right, Rake is likely to be much more convenient and powerful. =)