jekyll-theme
My Jekyll theme.
I use it for egor-tensin.github.io, blog, sorting-algorithms.
Preview
An example website can be viewed at https://egor-tensin.github.io/jekyll-theme/.
Configuration
The complete list of configuration options follows. Put it in _config.yml and adjust how you see fit.
settings:
project:
name: Test
description: This is a test project
license: MIT License
license_file: LICENSE.txt
author:
name: John Doe
email: John.Doe@example.com
navbar:
hide: false
Features
Layouts
plain: navbar at the top + footer at the bottomdefault: same as plain, but with a sidebar on the right.page: same as default, but with the page's header.post: same as default, but with the post's header and publication date.
Navbar
Hide the navbar by setting either site.settings.navbar.hide or
page.navbar.hide to true.
Put a page on the navbar by defining setting page.navbar.link to true or
a custom HTML string.
Pages are sorted in the ascending order of page.navbar.priority.
If a page on the navbar is paginated, set page.navbar.paginated to true so
that it doesn't appear two or more times.
You can add a glyphicon to the navbar link by settings page.navbar.icon to
something like home, envelope, etc.
Post feed
See feed/index.html for an example of how to easily create a paginated post feed. Basically, just include posts/posts.html.
Category pages
See life/index.html or work/index.html for examples of how to create
category pages, with a list of posts belonging to the category.
Basically, just include categories/category.html and set the category
parameter to the category's name.
If you want to create a page with a list of all categories and the posts belonging to them, see archive/index.html for an example. Simply including categories/categories.html should do the job.
Code snippets
See this post for an example of how to conveniently embed code snippets in your pages. Basically, you need to put something like this in the front matter:
snippets_root_directory: snippets
snippets_language: c++
snippets:
hello:
- hello.hpp
- hello.cpp
world:
- world.hpp
- world.cpp
And then you can just format an entire section of snippets using a single
include:
{% include snippets/section.html section_id='hello' %}
The line above would output both hello.hpp and hello.cpp to the page.
Code snippets can be hidden in collapsible panels. See this post for an example.
Typesetting math
MathJax can be used to typeset mathematics using LaTeX.
To use MathJax, set mathjax to true in page's front matter.
Then you can do things like this:
This is an inline formula: $$y = kx + b$$.
This is a formula in a separate block:
$$
y = kx + b
$$
Behind the scenes, Kramdown transforms these to \(...\) and \[...\]
sequences, to be processed by MathJax.
See this post for a usage example.
History
This theme wasn't built from the ground up, it's a product of concurrent
evolution of my three Jekyll projects.
At one moment I got sick of the code duplication, so I just cloned the most
feature-reached project into this repository (tagged from_jekyll_project),
and removed everything that wasn't theme-related.
Then I made some minor tweaks to make it work with the other two projects, and
voilĂ !
I thought about several alternatives to cloning the whole repository.
- Simply copying the latest versions of the relevant files would lose their history.
- Heavily rewriting repository history using
git filter-branchor something like this is painfully hard to get right for me.
License
Distributed under the MIT License. See LICENSE.txt for details.
This theme is build upon the Twitter Bootstrap framework, which is also MIT Licensed and copyright 2015 Twitter.
