Skip to main content

A CLI frontend for pdftex for easy templated LaTeX writing.

Project description


Inspired by the writing workflow of Markdown + YAML used in Jekyll, I wanted a system that would allow me to do something similar for LaTeX files. More often than not, I reuse my LaTeX styles, and import a file of content in the {maincontent} environment. Hopefully you can find it useful too.

This program takes files that look like the sample below (LaTeX content with YAML header), generates a full LaTeX file, and then compiles this with pdflatex or xelatex.


While this code works (with no guarantees), it definitely needs tests and better error handling and more flexible of code. That said, this is far enough along that it works… so that’s pretty awesome! These files can be built directly in Sublime Text if you follow the instructions below.

I intend to keep this compatible with both Python 2 and 3, but since it is in alpha, Python 3 support is not always guaranteed.

Successfully run on OSX, Ubuntu, and Windows (cygwin).


This package is available on PyPI. To install, just type pip install jekkish in your terminal.

If you use SublimeText, you can use place jekkish.sublime-build in your Sublime Packages/User directory.


This package uses PyYAML, Jinja2. It assumes that pdflatex is installed and included in the system path.

There is a bare-bones template called “default” included in this package and can be used as a reference. Additional templates should be placed in ~/.jekkish/

Sample document, conventions, and instructions

Below is a sample document.

template: default
title: I wrote a something
subtitle: A tale of longing and desperation
author: Gebralter Crowlin
date:   "January 11, 1906"
  - GaramondPremierPro
  - endnotes
spacing: \doublespace
Look at \emph{all} of the things I wrote!

The only reserved variable names are template and content.

Feel free to use any others you find useful for your documents. The system uses Jinja2, so you are free to make templates as simple or complicated as you please.

  • Assumes that template.tex can be found in ~/.jekkish
  • Should be placed in the mainmatter of your template as (((content))).
  • Everything above the YAML header will be ignored.
  • Everything below the YAML header will be rendered in the (((content))) tag.

In the template, these files are essentially LaTeX files, but with some templating logic.

  • ((* *)) is used for template logic
  • (((variable_name))) is used for where variables will be rendered.
  • ((= comments =)) are found between these characters

As of version 0.3.3, an additional flag xelatex can be included in the YAML header. If detected, this flag will ensure that xelatex is used to compile the document, rather than pdftex. For conveniences’ sake, an additional template is added to handle XeLaTeX. This document can handle two font-specific variables: serif and sans.

Command Line

A full list of options can be found by running jekkish --help

Basic use jekkish <filename>

An optional jobname can be added, e.g. jekkish <filename> <jobname>

To run Jekkish in watch mode type the above with the optional tag --watch


This software is available under the MIT license

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for jekkish, version 0.3.4
Filename, size File type Python version Upload date Hashes
Filename, size jekkish-0.3.4.tar.gz (6.6 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page