I originally forked Barry Clark’s jekyll-now repository, but then I deleted everything except those things that were absolutely necessary. I plan to possibly add these things back in as I understand them. The bulk of these things I don’t understand because I don’t know css, so I guess I should learn css next. But is it really so bad if a website looks really minimal like this? Maybe I could still do a minimal look better by knowing css.
Also, jekyll seems to be designed for blogs, but I don’t plan for this
site to be a blog, so I got rid of the stock index.html with its
fee, iterating through the posts in the _posts directory. I also
removed the _posts directory. In the place of index.html, I put
an index.md file.
I thought KaTeX was pretty cool, because it does annoy me how long MathJax takes to load. I got it working by copying the KaTeX layout from here. Here are some examples:
\[\frac{3}{2}=\int_{-\infty}^\epsilon\dfrac{x}{y}+\textrm{some text}\]Here is some inline math: \(x\), \(y\), and \(x+y=\frac{2}{3}\sim\dfrac{3}{2}\).
I am doing this on Windows! It was really time-consuming to set up a way to host the website locally! I had to install all sorts of things, like chocolatey and ruby. As usual, the information was scattered all over the web. This guide in particular really helped.
Here is what I think I did (I don’t remember exactly, but it’s better than nothing):
> Set-ExecutionPolicy RemoteSigned
> (new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1') | iex
ruby. Open git-bash and type:$ choco install ruby
git-bash, type:$ cd
$ touch .bashrc
$ echo "export SSL_CERT_DIR=/mingw64/ssl/certs" >> .bashrc
$ echo "export SSL_CERT_FILE=/mingw64/ssl/cert.pem" >> .bashrc
$ source .bashrc
Now close git-bash and restart it.
github-pages gem:$ gem install github-pages
Now, to host a github-pages website locally, type
$ jekyll serve --watch
and go in your browser to “localhost:4000”.
Download the version of DevKit from
here corresponding to your
version of Ruby. (To see what version of Ruby you have, type ruby
-v in git-bash.
In git-bash, navigate to wherever you unpacked DevKit and type:
$ ruby dk.rb init
Find where Ruby was installed, and add a line with a space, a dash, a
space, and then the path of the Ruby directory to the config.yml
file in the DevKit directory. This line should look something like this:
- C:/Tools/ruby23
Then type:
$ ruby dk.rb install
You also need the bundle gem:
$ gem bundle
Now, whenever you edit the Rubyfile, you have to type this:
$ gem install
to generate a Rubyfile.lock file.
Then instead of jekyll serve, you have to type bundle exec jekyll serve.
The diagrams this site are svg files that are generated with Haskell diagrams. Here is an example:
All of the svg files, and the lhs files that generate them, are in
_includes/svg/diagrams/. To compile them yourself, first install
the Haskell platform. Then
update cabal, the Haskell package manager, and use it to make a
sandbox in your working directory:
$ cabal update
$ cabal sandbox init
Now install diagrams:
$ cabal install diagrams -j1
The -j1 flag is only necessary for Windows. It prevents cabal
from editing the package.cache file multiple times at one, which is
a problem for Windows but not for *nix.
See
here and
here for
more information.
Then you can compile a haskell file diagram.lhs with
$ cabal exec -- ghc --make diagram.lhs
or, in PowerShell,
> cabal exec (ghc --make diagram.lhs)
This runs ghc --make diagram.lhs in the sandbox environment, which
generates an executable diagram.exe. We now run this executable to
generate an svg file diagram.svg.
Bash:
$ ./diagram
Cmd.exe
> diagram.exe
PowerShell
> .\diagram.exe
If you are using bash, then you can run the shell script
./compileDiagrams.sh. This compiles some or all of the haskell
files in _includes/svg/diagrams/, executes the resulting
executables, and also does some postprocessing (replaces & with
& to reverse the xml-encoding of the svg builder).
To use this script on all diagrams:
$ ./compileDiagrams
To use it just on diagrams thisOne.lhs, thisOneToo.lhs, and
alsoThis.lhs:
$ ./compileDiagrams thisOne.lhs thisOneToo.lhs alsoThis.lhs