In | Write

Editors (with Markdown support)

It’s important to use a good editor with support of Markdown.

I’m (mmagnus) using EMACS (, sometimes I use MacDown ( or Atom (



Fig in Emacs. I love EMACS for this Outline Mode - you can see immediately the structure of your note, it helps to navigate and understand (= keep it clean) your note.


Fig Emacs can “split” a note for you, so you can work in two (and more) places of your note at the same time!



Fig in Atom is OK ;-)

Search in project




Fig in MacDown is not bad ;-)

Markdown (Github-Flavored Markdown)

Write your notes using Github-Flavored Markdown! Markdown is a way to style text on the web. You control the display of the document; formatting words as bold or italic, adding images, and creating lists are just a few of the things we can do with Markdown. Mostly, Markdown is just regular text with a few non-alphabetic characters thrown in, like # or *.

GitHub Flavored Markdown is a version of the Markdown syntax that provides an additional set of useful features, many of which make it easier to work with your notes.

Syntax highlighting


``` js
var foo = function (bar) {
  return bar++;


Read more

Geekbook Only

This a set of extensions developed by the Geekbook community.

Find Files

Type [ff:<name_of_the_file>] to trigger locate (on Linux) or glocate (on macOS, install brew install findutils) to find a full path to your file and insert it in the given place in a generated html.


You have to keep you locate database up to date, use sudo updatedb (on Linux) or sudo gupdatedb regularly.



to get this:



For many links in one note, this might be slow to re-generate (geekbook has to locate all files). We might want to develop some cache system to speed this up at some point. Yeah, there is a cache system now implemented. All paths are save to find_file.json, and if your file has been seen before, the path to that file will be recover from the db. @todo: Now we need a script that will update this database from time to time.

Insert File

Wherever you want to insert an external file, you can use:


and the file will be included in your Markdown content. The file can be written in Markdown, if so, it will be processed as your regular Markdown content.

Table of Content

Type [tableofcontent] to get the table of content of a given note.


Type [date] to get the current date 2017-01-13 with:

with time.strftime("%Y-%m-%d", time.localtime(os.path.getctime(<md file>)))


You can define width and height for your images as follows:


Read more in the function documentation:


Update: work also with more than one link per line and with tables. Update (2): you can also define width and height of your images.

Only width, e.g.:

![](imgs/Screen_Shot_2017-02-12_at_1.17.04_AM.png =500x)

only height:

![](imgs/Screen_Shot_2017-02-12_at_1.17.04_AM.png =x400)

and both:

![](imgs/Screen_Shot_2017-02-12_at_1.17.04_AM.png =400x400)

You can use internal variable log to switch on and off logging.

If you want to position more images next to each other, you can use tables. They will be autoscaled for you!:

Fig. gab | gab+pk | gab+pk (2)
![](imgs/ss_gab.png) | ![](imgs/Screen_Shot_2017-02-12_at_1.17.04_AM.png) | ![](imgs/Screen_Shot_2017-02-12_at_1.17.04_AM.png)
![](imgs/ss_gab.png) | ![](imgs/Screen_Shot_2017-02-12_at_1.17.04_AM.png) | ![](imgs/Screen_Shot_2017-02-12_at_1.17.04_AM.png)

which will give you:


Insert Image

Type ii (and only this in a line) to ask geekbook to copy the last image from the folder when you keep you screenshots to the folder with your images:

Before in your markdown file:


save the file, reload the file to get:


To turn on this plugin in your engine.conf_local set the path, e.g.



Start a line with ```! ```(mind the space after !) to mark the fragment as an abstract.

You can collect all lines marked as an abstract, use tag [abstract]:

! ble ble ble
# task
! summary of task

it will give you:

Ble Ble ble
Summary of task.

The last sentence is collected along a note.



Make you notes look more fun! You can insert a youtube video by typing `[yt:video id]`: Where video_id corresponds to the 11 alphaumeric characters that you can see in the youtube url of your video. Ex. dj kitty – url – its video_id = ICDGkVbSWUo Type in geekbook `[yt:ICDGkVbSWUo]` to visualise one of our favourite Djs.


Task status

It’s fun to take notes and to take track of our projects ? Isn’t it ? Now you can type these useful tags in your notes to know what was done, what are you doing and what to do !

Type `@todo`, `@done`, `@progress` to get:


How do we use this ? We like to introduce this tag in our titles to follow our progresses. `## 19.02.2017 - Go to buy the milk for Dj kitten @done`