2026/08/14
Welcome to my first true blogpost! If you can read this, my concept of writing an automated blogging mechanism using purely Bash, LaTeX, pandoc, HTML and CSS succeeded. Below some kind of FAQ, for the people that are new here.
We can do a lot of fun stuff with this. Below, in Figure 1 you can see a photo I took. The figure
number left of this text is clickable, like hyperref’s in
LaTeX!
We can also make codeblocks, see the build script for the entire
website below. The code is neatly placed in a scrollable code block. The
color sheme is implemented in the template.html against
which each blogpost page is build with pandoc.
#! /usr/bin/env bash
function build {
# First build the main page
pandoc main.tex -f latex -t html -s -o index.html --template './template.html' --metadata title='Jelle Langedijk' &&
# If succeeds, build the blog index as well! :)
## First we compile a list of all blogfiles to include
## To Check the amount of blogiles there are: echo ${#blog_files[0]}
## To index the array: ${blog_files[0]} (1,2,3,4...)
mapfile -t blog_files < <( ls -t ./blog | grep .tex | grep -v -e main -e linkstoblogs )
: > ./blog/linkstoblogs.tex # Send the null command to the file. Effectively clears it.
for texname in ${blog_files[@]}; do
htmlname="${texname/.tex/.html}"
blogname="${texname/.tex/}"
#blogdate=$(date -r "./blog/${texname}" "+%Y-%m-%d %H:%M:%S %Z")
# Read (Custom) metadata block. use AWK do grab correct parts, use xargs to remove whitespaces
blogdate=$(head -n 3 "./blog/${texname}" | grep date | awk '{$1=$2=""; print $0}' | xargs)
blogtitle=$(head -n 3 "./blog/${texname}" | grep title | awk '{$1=$2=""; print $0}' | xargs)
blogauthor=$(head -n 3 "./blog/${texname}" | grep author | awk '{$1=$2=""; print $0}' | xargs)
# Compile the blog entry
pandoc "./blog/${texname}" -f latex -t html -s -o "./blog/${htmlname}" --template './blog/template.html' --metadata title="${blogname}" --metadata date="${blogdate}" --metadata author="${blogauthor}" --mathjax
echo "\href{./$htmlname}{$blogname [$blogdate]} \\\\ " >> ./blog/linkstoblogs.tex
echo "Blog '$blogname' added to index"
done
## Build the blog index
pandoc ./blog/main.tex -f latex+latex_macros -t html5 -s -o ./blog/index.html --template './blog/template.html' --metadata title='Blog ⊂ jellel.me'
# Done :D
echo "Building finished succesfully!"
}
build
Since this codeblock directly points to the file on the Git
repository, it is automatically updated each time I build this website.
Rendering mathematics is handled via MathJax (on Cloudfare), see [eulerint] below. \[\int e^{x} dx = e^{x} + C
\label{eq:eulerint}\] You can rightclick on the equation to
change some MathJax settings if you like. TikZ figures are currently not
supported yet, altough it should be possibe via (self-written)
pandoc filters.
Because it’s fun. And I really like typesetting in LaTeX.
There is no real goal. I will not maintain any kind of schedule (e.g. posting once every \(x\) weeks). Contributions to the blog will only be made when I feel like writing about something, which can be anything: personal projects, coffee, things I read, things I saw, et cetera.
Made with LaTeX, pandoc, html and
CSS. Found (spelling) mistakes? Feel free to open an issue
on the repository.
The code of this webpage is publicly available, but without a license. The (raw) content on this webpage, including the code backing it is thus copyrighted. The only exception to this is the Ortica font designed by Ben Bovani that this website uses. It is licensed under the SIL Open Font License.
Hosted on StaticHost in Helsinki.