# Shakebook

Welcome to shakebook!

Shakebook is a documentation generator aimed at covering all the bases for mathematical, technical and scientific diagrams, videos and typesetting, written in Haskell. Shakebook uses shake and pandoc to provide combinators for taking markdown files and combining them into documents, but allowing the user to control how. Shakebook provides a set of defaults for building sites like the one you’re reading now, and you can mixin your own shake rules to add additional kinds of compilation units for diagrams and video.

Shakebook allows you to take the same markdown contents and export them both to HTML and PDF simultaneously. This website is generated by this template repository and deployed with gitlab pages.

You can fork this repository or you can use the leaner shakebook-template repository. Simply fork the repository to a new gitlab group under a groupname.gitlab.io and the CI will take care of the rest. For full running instructions see the Getting Started section.

## Features

### Latex

Shakebook supports inline latex using pandoc’s markdown renderer. For more information on latex see here.

$$e^{i \theta} + 1 = 0$$

### Syntax Highlighting

class Functor f where
fmap :: (a -> b) -> (f a -> f b)

### Image and Video Compilation

Shakebook allows you to provide custom build rules for generating any content from source in a small amount of code. Here we can see our site uses an example from reanimate, a library for video generation.

As well as an inline-r example.

But you don’t need to stick to Haskell libraries. As long as you can build your content from source via a shell command, you can tell Shakebook how to produce it.

### PDF Output

Shakebook allows you to take the sme markdown content and export it both to HTML and PDF simultaneously, replacing the embedded video with a link wherever needed.

Getting Started