Toolchain Tuesday No. 3
TL;DR: Part of a series of posts about tools, services, and packages that I use in day-to-day operations to boost efficiency and free up time for the things that really matter. Use at your own risk - happy to answer questions. For the full, continuously expanding list so far see here.
This is the third installment of a series of posts; the full list is expanding over time. This time around will be Markdown
heavy.
Software
Jekyll
Static website and blog generator.
Learning curve: ⭐️⭐️⭐️⭐️⭐️
Usefulness: ⭐️⭐️⭐️⭐️⭐️
Site: https://jekyllrb.com/
Jekyll
is an extremely useful piece of software. Once set up it basically allows you to turn markdown documents into webpages or blog posts: think compiling your webpage similarly to how you would use LaTeX
. Supports all types of plugins and can be insanely customized. However, the learning curve is steep: lots of moving pieces such as css
templates, ruby
code, yaml
(data-oriented markup [link]), and liquid
(template language [link]). Nonetheless, definitely worth it and I highly recommend investing the time the next time when you need to redo your webpage etc. I am running both my homepage and blog via Jekyll
. Just to give you an example how easy things are once setup:
---
layout: landing
author_profile: true
title: "Publications of Sebastian Pokutta"
---
**In Preparation / Articles Pending Review.**
{% bibliography --query @*[ptype ~= preprint] %}
**Refereed Conference Proceedings.**
{% bibliography --query @*[ptype ~= conference] %}
**Refereed Journals.**
{% bibliography --query @*[ptype ~= journal] %}
**Unpublished Manuscripts.**
{% bibliography --query @*[ptype ~= unpublished] %}
**Other.**
{% bibliography --query @*[ptype ~= other] %}
These few lines of markdown
and liquid
generate my publication list from a bibtex file, pulling out the URLs adding links to (1) arxiv, (2) the journal, and (3) summaries on the blog here (if they exist).
Also all the formulas in the posts are handled via jekyll
+ markdown
+ mathjax
:
**Typesetting formulas with markdown:**
$$\min_{v \in P} \langle \nabla f(x), v \rangle.$$
gives:
Typesetting formulas with markdown:
\[\min_{v \in P} \langle \nabla f(x), v \rangle.\]In fact, GitHub pages is driven by Jekyll
, so that you most likely have already encountered it without knowing.
Markdown
Versatile plain text format that can be converted into almost anything.
Learning curve: ⭐️⭐️
Usefulness: ⭐️⭐️⭐️⭐️⭐️
Site: https://en.wikipedia.org/wiki/Markdown
From Wikipedia:
Markdown is a lightweight markup language with plain text formatting syntax. Its design allows it to be converted to many output formats.
By now I use Markdown for a variety of things as it can be converted into almost any output format by either dedicated converters (e.g., Jekyll
discussed above to turn it into HTML) or universal converters such as pandoc
(see below).
pandoc
Universal document converter. Great together with Markdown.
Learning curve: ⭐️⭐️
Usefulness: ⭐️⭐️⭐️⭐️
Site: https://pandoc.org/
pandoc
(among other output converters) is what makes Markdown extremely powerful. Consider this Markdown file named SLIDES
:
% Eating Habits
% John Doe
% March 22, 2005
# In the morning
- Eat eggs
- Drink coffee
# In the evening
- Eat spaghetti
- Drink wine
# Conclusion
- And the answer is...
- $f(x)=\sum_{n=0}^\infty\frac{f^{(n)}(a)}{n!}(x-a)^n$
A simple pandoc -s --mathml -i -t dzslides SLIDES -o example16a.html
turns this into HTML slides. Want a different slide format? Try, e.g., pandoc -s --webtex -i -t slidy SLIDES -o example16b.html
with those HTML slides or pandoc -s --mathjax -i -t revealjs SLIDES -o example16d.html
with those HTML slides. Don’t like HTML slides and want beamer
instead? pandoc -t beamer SLIDES -o example8.pdf
does the job and you get this. Just want a regular pdf? pandoc SLIDES --pdf-engine=xelatex -o example13.pdf
. Want a Microsoft Word
file (including the formulas)? pandoc -s SLIDES -o example29.docx
… the possibilities are endless and all derived from a single original format. (Near) perfect separation from content and presentation.