Contributing to the Docs
The site is built with Jekyll and the Just the Docs theme. Every page is a Markdown file in docs/. Pushing to master triggers an automatic GitHub Actions build and deploy.
Access
The repo is open to collaborators with write access. If you don't have access yet, write to Luca Greco to be added.
Installing prerequisites
You need Ruby ≥ 3.1 and Bundler. Git is assumed to already be installed.
macOS
The system Ruby is too old. Install a current version via Homebrew:
brew install ruby
Then add Ruby to your PATH as Homebrew instructs (something like export PATH="/opt/homebrew/opt/ruby/bin:$PATH"), and install Bundler:
gem install bundler
Linux (Debian/Ubuntu)
sudo apt install ruby-full build-essential zlib1g-dev
gem install bundler
Windows
Use RubyInstaller (select the version with Devkit). Bundler is included.
Local preview
git clone https://github.com/LukeTheWalker/doc_repo.git
cd doc_repo
bundle install # only needed once, or after Gemfile changes
bundle exec jekyll serve --baseurl /doc_repo
Open http://localhost:4000/doc_repo/. Changes to .md files are picked up on reload without restarting the server.
Making a pull request
- Clone the repo (once) and keep it up to date:
git clone https://github.com/LukeTheWalker/doc_repo.git git pull origin master - Create a branch from
master:git checkout -b my-topic - Add or edit files, commit, and push the branch:
git add docs/my_page.md git commit -m "Add documentation for X" git push origin my-topic - Open a pull request against
masteron GitHub. Once merged, the site redeploys automatically — no further action needed.
Front matter reference
Every page starts with a YAML block delimited by ---. YAML is whitespace-sensitive and uses key: value pairs. A few rules worth knowing:
- Strings generally do not need quotes. Use double quotes if the value contains a colon,
#, or leading/trailing spaces:title: "Solver: Details". - Booleans are bare
true/false— no quotes. - Integers are bare numbers — no quotes.
- Indentation must be spaces, not tabs.
The keys used in this site are listed below. For the full reference see the Just the Docs navigation docs.
| Key | Type | Required | Description |
|---|---|---|---|
title | string | yes | Page title shown in the browser tab and sidebar. |
layout | string | yes | Always default for content pages. |
render_with_liquid | bool | yes | Set to false to prevent Jekyll from interpreting {{ and {% as template syntax — important for pages containing code examples. |
nav_order | integer | no | Position within the parent group in the sidebar. Lower = higher up. Defaults to the page title alphabetically if omitted. |
parent | string | no | Title of the parent page, exactly as written in that page's title field. Nests this page under it in the sidebar. |
grand_parent | string | no | Title of the grandparent page. Required when parent is itself a child (third-level pages). |
has_children | bool | no | Marks the page as a section that can contain children. |
nav_fold | bool | no | Collapses the section in the sidebar by default. Only meaningful when has_children: true. |
nav_exclude | bool | no | Hides the page from the sidebar. The page is still built and accessible via its URL. |
Creating a page
Every .md file under docs/ is a page. It needs a YAML front matter block:
---
title: "My Page"
layout: default
render_with_liquid: false
---
Content goes here.
That's the minimum. The page will be built and accessible via its URL but will not appear in the sidebar unless you add navigation fields (see below).
To exclude a page from the sidebar while still making it linkable:
nav_exclude: true
Adding a sidebar section
A sidebar section is just a page with has_children: true and nav_fold: true. By convention, section landing pages are named cat_<name>.md and live in their own subdirectory:
docs/
mysection/
cat_mysection.md ← section landing page
page_a.md
page_b.md
cat_mysection.md front matter:
---
title: "My Section"
nav_order: 8
has_children: true
nav_fold: true
layout: default
render_with_liquid: false
---
Child pages reference the section by its title:
---
title: "Page A"
nav_order: 1
parent: "My Section"
layout: default
render_with_liquid: false
---
Managing sidebar elements
| Front matter key | Effect |
|---|---|
nav_order | Position within the parent group (lower = higher up). Applies at every level. |
parent | Nests the page under a section. Value must exactly match the section's title. |
grand_parent | Required for third-level pages. Value must match the section title (the grandparent). |
has_children: true | Marks a page as a section that can have children. |
nav_fold: true | Starts the section collapsed in the sidebar. |
nav_exclude: true | Hides the page from the sidebar entirely. |
The navigation supports multiple levels of nesting. The grand_parent key always refers to the direct grandparent (one step above parent), not necessarily the top-level section.
To rename a section, change the title in its cat_*.md file and update the parent field of every child page to match.
Linking between pages
Links use standard Markdown syntax with .md extensions — the build converts them to .html automatically:
See [Normalization](normalization.md) for details.
For pages in a different directory, use a path relative to the current file:
[Getting Started](../compiling/getting_started/learn_jorek.md)
Absolute paths from the repo root also work:
[Getting Started](docs/compiling/getting_started/learn_jorek.md)
Do not hard-code .html extensions — they will break if the site baseurl changes.
Images
Keep images next to the page that uses them. Create an assets/ folder in the same directory as the .md file, with a subfolder named after the file:
docs/howto/
diamag.md
assets/
diamag/
my_figure.png
Reference them with a path relative to the .md file:

To control size, use an HTML <img> tag:
<img src="assets/diamag/my_figure.png" alt="Alt text" width="600">
Prefer PNG or SVG for diagrams and screenshots; keep file sizes reasonable — large binaries slow down the repository for everyone.
Maths
Inline LaTeX: $...$. Display math: $$...$$. MathJax renders both. Standard macros work; avoid bare || inside inline math — use \Vert instead.