This is the site generator that I created to build my blog. I detailed on my blog why I created the site generator, what it does, and what my plans are for enhancing the site. I do not intend for this to become a general purpose, static site generator like Jekyll or Pelican. The code is particular to my Emacs Org configuration and my website. You can copy this project and customize the scripts to suite your needs. I do not include the pages about.html and resume.html, which are referenced in the Makefile, and I do not include font files that you can download elsewhere. You can look at my blog’s structure at https://github.com/dwhoman/personal-site/tree/gh-pages.
- Makefile
- make file to build the site
- org-xhtml-keywords.xsl
- given org-html files, generates metadata.csv. This file gets passed to index-pages.awk.
- index-pages.awk
- converts csv to xml, creates generated/metadata.xml
- generated/metadata.xml
- threads.gxl
- site graph using the Graph Exchange Language
- threads.xsl
- convert svg output from GraphViz dot to html
- thread-pointers.xsl
- given threads.gxl, generate an xml document stating what documents immediatedly preceed or succeed a document
- get-thread-pointer.xsl
- given the generated file, thread-pointers.xml, and
a file name, returns the names of the files that are before an after the
given file in threads.gxl
- used by index-pages.awk
- atom-feed.xsl
- given metadata.xml, generates an atom feed xml
- html2unicode.sed
- converts HTML entities to XML Unicode
- blog-post-main.xsl
- modify blog post org html files
- categories.xsl
- given metadata.xml, generates a topical index page
- categories-processing.sed
- adds a link to the reorder.xsl style sheet in the categories.xhtml page
- description.xsl
- get page description information from org-html file
- used by index-pages.awk
- indexed-by-date.xsl
- given metadata.xml, generates an index sorted by date (created or updated)
- latex-svg-edit.xsl
- modify svg latex equations generated by Emacs Org
- page-template.xsl
- add stuff that is the same accross all pages
- page-template-xml.xsl
- convert page-template.xml into a XSLT file that outputs xml
- resume-latex.xsl
- convert resume.html to latex
- resume-latex.sed
- clean up xslt output of .tex file
- resume-text.xsl
- convert resume.html to plain text
- resume-text.sed
- clean up xslt output of .txt file
- svg-edit.xsl
- modify blog post SVGs before they are uploaded
- adding diacritics and dashes
- diacritics-dashes.xml
- data of word dashas and diacritics
- create-diacritics-dashes-st.xsl
- creates diacritics-dashes.xsl from diacritics-dashes.xml
My blog build system has the following directory structure.
- /
- contains all code files
- org-files/
- Org file source. This directory is under version
control. Some of the files also exist in another directory
called “notes”, that contains all my notes, which shares
the same Git repository. Not all of my notes are blog
posts and not all of my blog posts are notes.
- ltximg/
- directory automatically created by Org mode to store LaTeX
- [blog-file-name]/
- contains images and other data corresponding to the Org file
- org-html/
- output location for Org HTML export.
- tmp/
- temporary files mainly used for checking intermediate output
- generated/
- automatically generated files referenced by multiple targets in the Makefile
- graphics/
- site wide graphics
- fonts/
- font files