2016-02-09 21:59:37 +01:00
|
|
|
|
# Getting started
|
|
|
|
|
|
|
|
|
|
## Installation
|
|
|
|
|
|
2017-01-14 19:24:07 +01:00
|
|
|
|
!!! tip "Set up Material using Docker"
|
|
|
|
|
|
|
|
|
|
The official [Docker image][1] for Material comes with all dependencies
|
|
|
|
|
pre-installed and ready-to-use with the latest version published on PyPI,
|
2017-06-21 10:25:00 +02:00
|
|
|
|
packaged in a very small image (23MB compressed).
|
2017-01-14 19:24:07 +01:00
|
|
|
|
|
2017-02-26 18:30:34 +01:00
|
|
|
|
[1]: https://hub.docker.com/r/squidfunk/mkdocs-material/
|
|
|
|
|
|
2016-02-09 21:59:37 +01:00
|
|
|
|
### Installing MkDocs
|
|
|
|
|
|
2017-01-12 20:15:30 +01:00
|
|
|
|
Before installing [MkDocs][2], you need to make sure you have Python and `pip`
|
2016-12-29 17:55:08 +01:00
|
|
|
|
– the Python package manager – up and running. You can verify if you're already
|
2016-02-24 17:31:01 +01:00
|
|
|
|
good to go with the following commands:
|
2016-02-09 21:59:37 +01:00
|
|
|
|
|
|
|
|
|
``` sh
|
|
|
|
|
python --version
|
2016-12-29 17:55:08 +01:00
|
|
|
|
# Python 2.7.13
|
2016-02-09 21:59:37 +01:00
|
|
|
|
pip --version
|
2016-12-29 17:55:08 +01:00
|
|
|
|
# pip 9.0.1
|
2016-02-09 21:59:37 +01:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Installing and verifying MkDocs is as simple as:
|
|
|
|
|
|
|
|
|
|
``` sh
|
|
|
|
|
pip install mkdocs && mkdocs --version
|
2016-12-29 17:55:08 +01:00
|
|
|
|
# mkdocs, version 0.16.0
|
2016-02-09 21:59:37 +01:00
|
|
|
|
```
|
|
|
|
|
|
2017-01-15 11:24:32 +01:00
|
|
|
|
!!! warning "MkDocs version requirements"
|
2016-12-29 17:55:08 +01:00
|
|
|
|
|
|
|
|
|
Material requires MkDocs >= 0.16.
|
|
|
|
|
|
2017-01-12 20:15:30 +01:00
|
|
|
|
[2]: http://www.mkdocs.org
|
2016-12-29 17:55:08 +01:00
|
|
|
|
|
2016-02-09 21:59:37 +01:00
|
|
|
|
### Installing Material
|
|
|
|
|
|
2017-01-14 13:43:19 +01:00
|
|
|
|
#### using pip
|
2016-12-29 17:55:08 +01:00
|
|
|
|
|
|
|
|
|
Material can be installed with `pip`:
|
2016-02-09 21:59:37 +01:00
|
|
|
|
|
|
|
|
|
``` sh
|
|
|
|
|
pip install mkdocs-material
|
|
|
|
|
```
|
|
|
|
|
|
2017-01-14 13:43:19 +01:00
|
|
|
|
#### using choco
|
|
|
|
|
|
2017-06-21 10:25:00 +02:00
|
|
|
|
If you're on Windows you can use [Chocolatey][3] to install [Material][4]:
|
2017-01-14 13:43:19 +01:00
|
|
|
|
|
|
|
|
|
``` dos
|
|
|
|
|
choco install mkdocs-material
|
|
|
|
|
```
|
|
|
|
|
|
2017-06-21 10:25:00 +02:00
|
|
|
|
This will install all required dependencies like [Python][5] and [MkDocs][6].
|
2017-01-14 13:43:19 +01:00
|
|
|
|
|
2017-06-21 10:25:00 +02:00
|
|
|
|
[3]: https://chocolatey.org
|
|
|
|
|
[4]: https://chocolatey.org/packages/mkdocs-material
|
|
|
|
|
[5]: https://chocolatey.org/packages/python
|
|
|
|
|
[6]: https://chocolatey.org/packages/mkdocs
|
2017-01-14 13:43:19 +01:00
|
|
|
|
|
|
|
|
|
#### cloning from GitHub
|
2016-12-29 17:55:08 +01:00
|
|
|
|
|
2017-01-12 20:15:30 +01:00
|
|
|
|
Material can also be used without a system-wide installation by cloning the
|
2016-12-29 17:55:08 +01:00
|
|
|
|
repository into a subfolder of your project's root directory:
|
2016-02-09 21:59:37 +01:00
|
|
|
|
|
|
|
|
|
``` sh
|
2016-12-29 17:55:08 +01:00
|
|
|
|
git clone https://github.com/squidfunk/mkdocs-material.git
|
2016-02-09 21:59:37 +01:00
|
|
|
|
```
|
|
|
|
|
|
2017-06-21 10:25:00 +02:00
|
|
|
|
This is especially useful if you want to [extend the theme][7] and
|
|
|
|
|
[override some parts][8] of the theme. The theme will reside in the folder
|
2017-01-07 20:07:41 +01:00
|
|
|
|
`mkdocs-material/material`.
|
2016-12-29 17:55:08 +01:00
|
|
|
|
|
2017-06-21 10:25:00 +02:00
|
|
|
|
[7]: customization.md#extending-the-theme
|
|
|
|
|
[8]: customization.md#overriding-partials
|
|
|
|
|
|
2017-03-11 18:01:14 +01:00
|
|
|
|
### Troubleshooting
|
|
|
|
|
|
|
|
|
|
!!! warning "Installation on macOS"
|
|
|
|
|
|
|
|
|
|
When you're running the pre-installed version of Python on macOS, `pip`
|
|
|
|
|
tries to install packages in a folder for which your user might not have
|
2017-03-11 18:36:34 +01:00
|
|
|
|
the adequate permissions. There are two possible solutions for this:
|
2017-03-11 18:01:14 +01:00
|
|
|
|
|
|
|
|
|
1. **Installing in user space** (recommended): Provide the `--user` flag
|
|
|
|
|
to the install command and `pip` will install the package in a user-site
|
|
|
|
|
location. This is the recommended way.
|
|
|
|
|
|
|
|
|
|
2. **Switching to a homebrewed Python**: Upgrade your Python installation
|
|
|
|
|
to a self-contained solution by installing Python with Homebrew. This
|
|
|
|
|
should eliminate a lot of problems you may be having with `pip`.
|
|
|
|
|
|
|
|
|
|
!!! failure "Error: unrecognized theme 'material'"
|
|
|
|
|
|
2017-03-11 18:36:34 +01:00
|
|
|
|
If you run into this error, the most common reason is that you installed
|
2017-03-11 18:01:14 +01:00
|
|
|
|
MkDocs through some package manager (e.g. Homebrew or `apt-get`) and the
|
|
|
|
|
Material theme through `pip`, so both packages end up in different
|
2017-08-29 08:17:26 +02:00
|
|
|
|
locations. MkDocs only checks its install location for themes.
|
2017-03-11 18:01:14 +01:00
|
|
|
|
|
2016-12-29 17:55:08 +01:00
|
|
|
|
## Usage
|
|
|
|
|
|
2017-06-21 10:25:00 +02:00
|
|
|
|
In order to enable the theme just add one of the following lines to your
|
|
|
|
|
project's `mkdocs.yml`. If you installed Material using pip:
|
2016-02-09 21:59:37 +01:00
|
|
|
|
|
|
|
|
|
``` yaml
|
|
|
|
|
theme: 'material'
|
|
|
|
|
```
|
|
|
|
|
|
2017-01-12 20:15:30 +01:00
|
|
|
|
If you cloned Material from GitHub:
|
2016-02-09 21:59:37 +01:00
|
|
|
|
|
|
|
|
|
``` yaml
|
2016-12-29 17:55:08 +01:00
|
|
|
|
theme_dir: 'mkdocs-material/material'
|
2016-02-09 21:59:37 +01:00
|
|
|
|
```
|
|
|
|
|
|
2017-03-11 18:36:34 +01:00
|
|
|
|
MkDocs includes a development server, so you can review your changes as you go.
|
2017-01-12 20:15:30 +01:00
|
|
|
|
The development server can be started with the following command:
|
2016-02-09 21:59:37 +01:00
|
|
|
|
|
|
|
|
|
``` sh
|
|
|
|
|
mkdocs serve
|
|
|
|
|
```
|
|
|
|
|
|
2017-06-21 10:25:00 +02:00
|
|
|
|
Now you can point your browser to [http://localhost:8000][9] and the Material
|
|
|
|
|
theme should be visible. From here on, you can start writing your documentation,
|
|
|
|
|
or read on and customize the theme through some options.
|
2017-01-07 20:07:41 +01:00
|
|
|
|
|
2017-01-14 12:42:53 +01:00
|
|
|
|
[9]: http://localhost:8000
|
2016-02-09 21:59:37 +01:00
|
|
|
|
|
|
|
|
|
## Options
|
|
|
|
|
|
|
|
|
|
The Material theme adds some extra variables for configuration via your
|
2017-03-11 18:36:34 +01:00
|
|
|
|
project's `mkdocs.yml`. See the following sections for all available options.
|
2016-02-09 21:59:37 +01:00
|
|
|
|
|
2016-02-24 17:31:01 +01:00
|
|
|
|
### Changing the color palette
|
|
|
|
|
|
2017-06-21 10:25:00 +02:00
|
|
|
|
A default is hue is defined for every primary and accent color on Google's
|
|
|
|
|
Material Design [color palette][10], which makes it very easy to change the
|
2016-12-29 17:55:08 +01:00
|
|
|
|
overall look of the theme. Just set the primary and accent colors using the
|
2017-06-21 10:25:00 +02:00
|
|
|
|
following variables:
|
2016-02-24 17:31:01 +01:00
|
|
|
|
|
|
|
|
|
``` yaml
|
|
|
|
|
extra:
|
|
|
|
|
palette:
|
|
|
|
|
primary: 'indigo'
|
|
|
|
|
accent: 'light blue'
|
|
|
|
|
```
|
|
|
|
|
|
2017-01-12 20:15:30 +01:00
|
|
|
|
Color names are case-insensitive, but must match the names of the Material
|
|
|
|
|
Design color palette. Valid values are: `red`, `pink`, `purple`, `deep purple`,
|
|
|
|
|
`indigo`, `blue`, `light blue`, `cyan`, `teal`, `green`, `light green`, `lime`,
|
|
|
|
|
`yellow`, `amber`, `orange`, `deep orange`, `brown`, `grey` and `blue grey`.
|
|
|
|
|
The last three colors can only be used as a primary color.
|
2016-12-29 17:55:08 +01:00
|
|
|
|
|
|
|
|
|
If the color is set via this configuration, an additional CSS file that
|
2017-06-21 10:25:00 +02:00
|
|
|
|
defines the color palette is automatically included. If you want to keep things
|
|
|
|
|
lean, clone the repository and recompile the theme with your custom colors set.
|
|
|
|
|
See the guide on [customization][11] for more information.
|
2016-12-29 17:55:08 +01:00
|
|
|
|
|
2017-01-14 12:42:53 +01:00
|
|
|
|
[10]: http://www.materialui.co/colors
|
|
|
|
|
[11]: customization.md
|
2016-12-29 17:55:08 +01:00
|
|
|
|
|
|
|
|
|
#### Primary colors
|
|
|
|
|
|
|
|
|
|
Click on a tile to change the primary color of the theme:
|
|
|
|
|
|
|
|
|
|
<button data-md-color-primary="red">Red</button>
|
|
|
|
|
<button data-md-color-primary="pink">Pink</button>
|
|
|
|
|
<button data-md-color-primary="purple">Purple</button>
|
|
|
|
|
<button data-md-color-primary="deep-purple">Deep Purple</button>
|
|
|
|
|
<button data-md-color-primary="indigo">Indigo</button>
|
|
|
|
|
<button data-md-color-primary="blue">Blue</button>
|
|
|
|
|
<button data-md-color-primary="light-blue">Light Blue</button>
|
|
|
|
|
<button data-md-color-primary="cyan">Cyan</button>
|
|
|
|
|
<button data-md-color-primary="teal">Teal</button>
|
|
|
|
|
<button data-md-color-primary="green">Green</button>
|
|
|
|
|
<button data-md-color-primary="light-green">Light Green</button>
|
|
|
|
|
<button data-md-color-primary="lime">Lime</button>
|
|
|
|
|
<button data-md-color-primary="yellow">Yellow</button>
|
|
|
|
|
<button data-md-color-primary="amber">Amber</button>
|
|
|
|
|
<button data-md-color-primary="orange">Orange</button>
|
|
|
|
|
<button data-md-color-primary="deep-orange">Deep Orange</button>
|
|
|
|
|
<button data-md-color-primary="brown">Brown</button>
|
|
|
|
|
<button data-md-color-primary="grey">Grey</button>
|
|
|
|
|
<button data-md-color-primary="blue-grey">Blue Grey</button>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
var buttons = document.querySelectorAll("button[data-md-color-primary]");
|
|
|
|
|
Array.prototype.forEach.call(buttons, function(button) {
|
|
|
|
|
button.addEventListener("click", function() {
|
|
|
|
|
document.body.dataset.mdColorPrimary = this.dataset.mdColorPrimary;
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
#### Accent colors
|
|
|
|
|
|
|
|
|
|
Click on a tile to change the accent color of the theme:
|
|
|
|
|
|
|
|
|
|
<button data-md-color-accent="red">Red</button>
|
|
|
|
|
<button data-md-color-accent="pink">Pink</button>
|
|
|
|
|
<button data-md-color-accent="purple">Purple</button>
|
|
|
|
|
<button data-md-color-accent="deep-purple">Deep Purple</button>
|
|
|
|
|
<button data-md-color-accent="indigo">Indigo</button>
|
|
|
|
|
<button data-md-color-accent="blue">Blue</button>
|
|
|
|
|
<button data-md-color-accent="light-blue">Light Blue</button>
|
|
|
|
|
<button data-md-color-accent="cyan">Cyan</button>
|
|
|
|
|
<button data-md-color-accent="teal">Teal</button>
|
|
|
|
|
<button data-md-color-accent="green">Green</button>
|
|
|
|
|
<button data-md-color-accent="light-green">Light Green</button>
|
|
|
|
|
<button data-md-color-accent="lime">Lime</button>
|
|
|
|
|
<button data-md-color-accent="yellow">Yellow</button>
|
|
|
|
|
<button data-md-color-accent="amber">Amber</button>
|
|
|
|
|
<button data-md-color-accent="orange">Orange</button>
|
|
|
|
|
<button data-md-color-accent="deep-orange">Deep Orange</button>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
var buttons = document.querySelectorAll("button[data-md-color-accent]");
|
|
|
|
|
Array.prototype.forEach.call(buttons, function(button) {
|
|
|
|
|
button.addEventListener("click", function() {
|
|
|
|
|
document.body.dataset.mdColorAccent = this.dataset.mdColorAccent;
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
</script>
|
2016-02-24 17:31:01 +01:00
|
|
|
|
|
2016-02-17 18:08:11 +01:00
|
|
|
|
### Changing the font family
|
2016-02-09 21:59:37 +01:00
|
|
|
|
|
2017-06-21 10:25:00 +02:00
|
|
|
|
By default the [Roboto font family][12] is included with the theme, specifically
|
|
|
|
|
the regular sans-serif type for text and the `monospaced` type for code. Both
|
|
|
|
|
fonts are loaded from [Google Fonts][13] and can be changed to other fonts,
|
|
|
|
|
like for example the [Ubuntu font family][14]:
|
2016-02-09 21:59:37 +01:00
|
|
|
|
|
|
|
|
|
``` yaml
|
|
|
|
|
extra:
|
2016-02-17 18:08:11 +01:00
|
|
|
|
font:
|
2016-12-29 17:55:08 +01:00
|
|
|
|
text: 'Ubuntu'
|
|
|
|
|
code: 'Ubuntu Mono'
|
2016-02-17 18:08:11 +01:00
|
|
|
|
```
|
|
|
|
|
|
2017-06-21 10:25:00 +02:00
|
|
|
|
The text font will be loaded in weights 400 and **700**, the `monospaced` font
|
|
|
|
|
in regular weight. If you want to load fonts from other destinations or don't
|
|
|
|
|
want to use the Google Fonts loading magic, just set `font` to `false`:
|
2016-02-17 18:08:11 +01:00
|
|
|
|
|
|
|
|
|
``` yaml
|
|
|
|
|
extra:
|
2017-03-11 18:36:34 +01:00
|
|
|
|
font: false
|
2016-02-09 21:59:37 +01:00
|
|
|
|
```
|
|
|
|
|
|
2017-01-14 12:42:53 +01:00
|
|
|
|
[12]: https://fonts.google.com/specimen/Roboto
|
2017-02-24 22:53:12 +01:00
|
|
|
|
[13]: https://fonts.google.com
|
2017-01-14 12:42:53 +01:00
|
|
|
|
[14]: https://fonts.google.com/specimen/Ubuntu
|
2016-12-29 17:55:08 +01:00
|
|
|
|
|
2017-03-11 17:24:03 +01:00
|
|
|
|
### Adding a source repository
|
|
|
|
|
|
|
|
|
|
To include a link to the repository of your project within your documentation,
|
|
|
|
|
set the following variables via your project's `mkdocs.yml`:
|
|
|
|
|
|
|
|
|
|
``` yaml
|
|
|
|
|
repo_name: 'my-github-handle/my-project'
|
|
|
|
|
repo_url: 'https://github.com/my-github-handle/my-project'
|
|
|
|
|
```
|
|
|
|
|
|
2017-06-21 10:25:00 +02:00
|
|
|
|
The name of the repository will be rendered next to the search bar on big
|
|
|
|
|
screens and as part of the main navigation drawer on smaller screen sizes.
|
2017-03-11 17:24:03 +01:00
|
|
|
|
Furthermore, if `repo_url` points to a GitHub, BitBucket or GitLab repository,
|
2017-03-11 18:36:34 +01:00
|
|
|
|
the respective service logo will be shown next to the name of the repository.
|
2017-03-11 17:24:03 +01:00
|
|
|
|
Additionally, for GitHub, the number of stars and forks is shown.
|
|
|
|
|
|
2017-08-02 14:09:13 +02:00
|
|
|
|
If the repository is hosted in a private environment, the service logo can be
|
|
|
|
|
set explicitly by setting `extra.repo_icon` to `github`, `gitlab` or
|
|
|
|
|
`bitbucket`.
|
|
|
|
|
|
2017-03-11 17:24:03 +01:00
|
|
|
|
!!! warning "Why is there an edit button at the top of every article?"
|
|
|
|
|
|
|
|
|
|
If the `repo_url` is set to a GitHub or BitBucket repository, and the
|
2017-03-11 18:36:34 +01:00
|
|
|
|
`repo_name` is set to *GitHub* or *BitBucket* (implied by default), an
|
2017-03-11 17:24:03 +01:00
|
|
|
|
edit button will appear at the top of every article. This is the automatic
|
|
|
|
|
behavior that MkDocs implements. See the [MkDocs documentation][15] on more
|
|
|
|
|
guidance regarding the `edit_uri` attribute, which defines whether the edit
|
2017-04-28 17:04:00 +02:00
|
|
|
|
button is shown or not.
|
2017-03-11 17:24:03 +01:00
|
|
|
|
|
|
|
|
|
[15]: http://www.mkdocs.org/user-guide/configuration/#edit_uri
|
|
|
|
|
|
2017-05-11 05:42:39 +02:00
|
|
|
|
### Adding a favicon
|
|
|
|
|
|
2017-06-21 10:25:00 +02:00
|
|
|
|
A favicon can be added by setting the `site_favicon` variable to an `.ico` or
|
|
|
|
|
image file:
|
2017-05-11 05:42:39 +02:00
|
|
|
|
|
|
|
|
|
``` yaml
|
|
|
|
|
site_favicon: 'images/favicon.ico'
|
|
|
|
|
```
|
|
|
|
|
|
2016-12-29 17:55:08 +01:00
|
|
|
|
### Adding a logo
|
2016-02-24 17:31:01 +01:00
|
|
|
|
|
2017-06-21 10:25:00 +02:00
|
|
|
|
Your logo should have rectangular shape with a minimum resolution of 128x128,
|
|
|
|
|
leave some room towards the edges and be composed of high contrast areas on a
|
|
|
|
|
transparent ground, as it will be placed on the colored header bar and drawer.
|
|
|
|
|
Simply create the folder `docs/images`, add your logo and embed it with:
|
2016-02-24 17:31:01 +01:00
|
|
|
|
|
|
|
|
|
``` yaml
|
|
|
|
|
extra:
|
2016-12-29 17:55:08 +01:00
|
|
|
|
logo: 'images/logo.svg'
|
2016-02-24 17:31:01 +01:00
|
|
|
|
```
|
|
|
|
|
|
2016-12-29 17:55:08 +01:00
|
|
|
|
### Adding social links
|
2016-02-09 21:59:37 +01:00
|
|
|
|
|
2017-06-21 10:25:00 +02:00
|
|
|
|
Social accounts can be linked in the footer of the documentation using the
|
|
|
|
|
automatically included [FontAwesome][16] webfont. The `type` must denote the
|
|
|
|
|
name of the social service, e.g. `github`, `twitter` or `linkedin` and the
|
|
|
|
|
`link` must contain the URL you want to link to:
|
2016-02-09 21:59:37 +01:00
|
|
|
|
|
|
|
|
|
``` yaml
|
|
|
|
|
extra:
|
2016-12-29 17:55:08 +01:00
|
|
|
|
social:
|
|
|
|
|
- type: 'github'
|
|
|
|
|
link: 'https://github.com/squidfunk'
|
|
|
|
|
- type: 'twitter'
|
|
|
|
|
link: 'https://twitter.com/squidfunk'
|
|
|
|
|
- type: 'linkedin'
|
2017-07-20 14:32:02 +02:00
|
|
|
|
link: 'https://linkedin.com/in/squidfunk'
|
2016-02-09 21:59:37 +01:00
|
|
|
|
```
|
|
|
|
|
|
2017-01-12 20:15:30 +01:00
|
|
|
|
The links are generated in order and the `type` of the links must match the
|
|
|
|
|
name of the FontAwesome glyph. The `fa` is automatically added, so `github`
|
|
|
|
|
will result in `fa fa-github`.
|
2016-12-29 17:55:08 +01:00
|
|
|
|
|
2017-03-11 17:24:03 +01:00
|
|
|
|
[16]: http://fontawesome.io/icons/
|
2016-12-29 17:55:08 +01:00
|
|
|
|
|
2016-03-12 13:21:06 +01:00
|
|
|
|
### Google Analytics integration
|
|
|
|
|
|
2016-12-29 17:55:08 +01:00
|
|
|
|
MkDocs makes it easy to integrate site tracking with Google Analytics.
|
|
|
|
|
Besides basic tracking, clicks on all outgoing links can be tracked as well as
|
|
|
|
|
how site search is used. Tracking can be activated in your project's
|
|
|
|
|
`mkdocs.yml`:
|
2016-03-12 13:21:06 +01:00
|
|
|
|
|
|
|
|
|
``` yaml
|
|
|
|
|
google_analytics:
|
|
|
|
|
- 'UA-XXXXXXXX-X'
|
|
|
|
|
- 'auto'
|
|
|
|
|
```
|
|
|
|
|
|
2017-02-24 22:53:12 +01:00
|
|
|
|
### Disqus integation
|
|
|
|
|
|
2017-03-11 17:24:03 +01:00
|
|
|
|
Material for MkDocs is integrated with [Disqus][17], so if you want to add a
|
2017-02-24 22:53:12 +01:00
|
|
|
|
comments section to your documentation set the shortname of your Disqus project
|
|
|
|
|
in your `mkdocs.yml`:
|
|
|
|
|
|
|
|
|
|
``` yaml
|
|
|
|
|
extra:
|
|
|
|
|
disqus: 'your-disqus-shortname'
|
|
|
|
|
```
|
|
|
|
|
|
2017-07-25 16:24:20 +02:00
|
|
|
|
The comments section is inserted in *every page, except the index page*.
|
|
|
|
|
Additionally, a new entry at the bottom of the table of contents is generated
|
|
|
|
|
that is linking to the comments section. The necessary JavaScript is
|
|
|
|
|
automatically included.
|
2017-02-24 22:53:12 +01:00
|
|
|
|
|
2017-05-31 15:31:17 +02:00
|
|
|
|
!!! warning "Requirements"
|
|
|
|
|
|
2017-07-18 08:35:03 +02:00
|
|
|
|
`site_url` value must be set in `mkdocs.yml` for the Disqus integration to
|
2017-05-31 15:31:17 +02:00
|
|
|
|
load properly.
|
2017-05-20 21:19:30 +02:00
|
|
|
|
|
2017-03-11 17:24:03 +01:00
|
|
|
|
[17]: https://disqus.com
|
2017-02-24 22:53:12 +01:00
|
|
|
|
|
2017-03-11 17:24:03 +01:00
|
|
|
|
### Localization
|
2017-01-07 18:54:03 +01:00
|
|
|
|
|
2017-06-01 09:43:54 +02:00
|
|
|
|
#### Translations
|
|
|
|
|
|
2017-03-11 17:24:03 +01:00
|
|
|
|
Material for MkDocs supports internationalization (i18n). In order to translate
|
|
|
|
|
the labels (e.g. *Previous* and *Next* in the footer), you can override the
|
2017-03-11 18:36:34 +01:00
|
|
|
|
file `partials/language.html` and provide your own translations inside the
|
2017-03-11 17:24:03 +01:00
|
|
|
|
macro `t`:
|
2017-01-07 18:54:03 +01:00
|
|
|
|
|
|
|
|
|
``` jinja
|
|
|
|
|
{% macro t(key) %}{{ {
|
2017-04-22 14:51:41 +02:00
|
|
|
|
"language": "en",
|
2017-01-07 18:54:03 +01:00
|
|
|
|
"edit.link.title": "Edit this page",
|
|
|
|
|
"footer.previous": "Previous",
|
|
|
|
|
"footer.next": "Next",
|
2017-03-11 17:24:03 +01:00
|
|
|
|
"meta.comments": "Comments",
|
|
|
|
|
"meta.source": "Source",
|
2017-06-01 09:43:54 +02:00
|
|
|
|
"search.languages": "",
|
2017-01-07 18:54:03 +01:00
|
|
|
|
"search.placeholder": "Search",
|
2017-03-22 22:06:46 +01:00
|
|
|
|
"search.result.placeholder": "Type to start searching",
|
|
|
|
|
"search.result.none": "No matching documents",
|
|
|
|
|
"search.result.one": "1 matching document",
|
|
|
|
|
"search.result.other": "# matching documents",
|
2017-08-02 14:09:13 +02:00
|
|
|
|
"search.tokenizer": "[\s\-]+",
|
2017-01-07 18:54:03 +01:00
|
|
|
|
"source.link.title": "Go to repository",
|
|
|
|
|
"toc.title": "Table of contents"
|
|
|
|
|
}[key] }}{% endmacro %}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Just copy the file from the original theme and make your adjustments. See the
|
2017-03-11 17:24:03 +01:00
|
|
|
|
section on [overriding partials][18] and the general guide on
|
2017-06-21 10:25:00 +02:00
|
|
|
|
[theme extension][19] in the customization guide. Furthermore, see the
|
|
|
|
|
[example configuration][20] for a head start.
|
|
|
|
|
|
|
|
|
|
[18]: customization.md#overriding-partials
|
|
|
|
|
[19]: customization.md#extending-the-theme
|
|
|
|
|
[20]: https://github.com/squidfunk/mkdocs-material/tree/master/examples/language
|
2017-01-07 20:07:41 +01:00
|
|
|
|
|
2017-06-01 09:43:54 +02:00
|
|
|
|
#### Site search
|
|
|
|
|
|
2017-06-21 10:25:00 +02:00
|
|
|
|
Site search is implemented using [lunr.js][21], which includes stemmers for the
|
|
|
|
|
English language by default, while stemmers for other languages are included
|
|
|
|
|
with [lunr-languages][22], both of which are integrated with this theme. Support
|
2017-06-01 09:43:54 +02:00
|
|
|
|
for other languages and even multilingual search can be activated by setting
|
|
|
|
|
the key `search.languages` to a comma-separated list of supported 2-letter
|
|
|
|
|
language codes, e.g.:
|
|
|
|
|
|
|
|
|
|
``` jinja
|
|
|
|
|
{% macro t(key) %}{{ {
|
|
|
|
|
...
|
2017-06-01 10:06:45 +02:00
|
|
|
|
"search.languages": "en, de, ru",
|
2017-06-01 09:43:54 +02:00
|
|
|
|
...
|
|
|
|
|
}[key] }}{% endmacro %}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
This will automatically load the stemmers for the specified languages and
|
|
|
|
|
set them up with site search, nothing else to be done.
|
|
|
|
|
|
|
|
|
|
At the time of writing, the following languages are supported: English `en`,
|
|
|
|
|
French `fr`, Spanish `es`, Italian `it`, Japanese `jp`, Dutch `du`, Danish `da`,
|
|
|
|
|
Portguese `pt`, Finnish `fi`, Romanian `ro`, Hungarian `hu`, Russian `ru`,
|
|
|
|
|
Norwegian `no`, Swedish `sv` and Turkish `tr`.
|
|
|
|
|
|
|
|
|
|
!!! warning "Only specify the languages you really need"
|
|
|
|
|
|
|
|
|
|
Be aware that including suppport for other languages increases the general
|
|
|
|
|
JavaScript payload by around 20kb (without gzip) and by another 15-30kb per
|
|
|
|
|
language.
|
|
|
|
|
|
2017-08-02 14:31:23 +02:00
|
|
|
|
The separator for tokenization can also be customized, which makes it possible
|
|
|
|
|
to index parts of words that are separated by `-` or `.` for example:
|
|
|
|
|
|
|
|
|
|
``` jinja
|
|
|
|
|
{% macro t(key) %}{{ {
|
|
|
|
|
...
|
|
|
|
|
"search.tokenizer": "[\s\-\.]+",
|
|
|
|
|
...
|
|
|
|
|
}[key] }}{% endmacro %}
|
|
|
|
|
```
|
|
|
|
|
|
2017-06-21 10:25:00 +02:00
|
|
|
|
[21]: https://lunrjs.com
|
|
|
|
|
[22]: https://github.com/MihaiValentin/lunr-languages
|
2017-01-07 18:54:03 +01:00
|
|
|
|
|
2017-03-11 18:01:14 +01:00
|
|
|
|
### Tabs
|
|
|
|
|
|
|
|
|
|
From version 1.1.0 on, Material supports another layer on top of the main
|
|
|
|
|
navigation for larger screens in the form of tabs. This is especially useful
|
2017-06-21 10:25:00 +02:00
|
|
|
|
for larger documentation projects with only few top-level sections. Tabs can be
|
2017-03-11 18:01:14 +01:00
|
|
|
|
enabled by setting the respective feature flag to true:
|
|
|
|
|
|
|
|
|
|
``` yaml
|
|
|
|
|
extra:
|
|
|
|
|
feature:
|
|
|
|
|
tabs: true
|
|
|
|
|
```
|
|
|
|
|
|
2016-02-09 21:59:37 +01:00
|
|
|
|
### More advanced customization
|
|
|
|
|
|
2016-02-24 17:31:01 +01:00
|
|
|
|
If you want to change the general appearance of the Material theme, see
|
2017-06-21 10:25:00 +02:00
|
|
|
|
[this article][23] for more information on advanced customization.
|
2017-01-07 20:07:41 +01:00
|
|
|
|
|
2017-06-21 10:25:00 +02:00
|
|
|
|
[23]: customization.md
|
2016-02-09 21:59:37 +01:00
|
|
|
|
|
|
|
|
|
## Extensions
|
|
|
|
|
|
2017-06-21 10:25:00 +02:00
|
|
|
|
MkDocs supports several [Markdown extensions][24]. The following extensions
|
2017-01-07 20:07:41 +01:00
|
|
|
|
are not enabled by default (see the link for which are enabled by default)
|
|
|
|
|
but highly recommended, so they should be switched on at all times:
|
2016-02-09 21:59:37 +01:00
|
|
|
|
|
|
|
|
|
``` yaml
|
|
|
|
|
markdown_extensions:
|
|
|
|
|
- admonition
|
2016-12-29 17:55:08 +01:00
|
|
|
|
- codehilite(guess_lang=false)
|
|
|
|
|
- toc(permalink=true)
|
2016-02-09 21:59:37 +01:00
|
|
|
|
```
|
|
|
|
|
|
2016-12-29 17:55:08 +01:00
|
|
|
|
For more information, see the following list of extensions supported by the
|
|
|
|
|
Material theme including more information regarding installation and usage:
|
2016-02-21 18:30:49 +01:00
|
|
|
|
|
2017-06-21 10:25:00 +02:00
|
|
|
|
* [Admonition][25]
|
|
|
|
|
* [Codehilite][26]
|
|
|
|
|
* [Footnotes][27]
|
|
|
|
|
* [Metadata][28]
|
|
|
|
|
* [Permalinks][29]
|
|
|
|
|
* [PyMdown Extensions][30]
|
|
|
|
|
|
|
|
|
|
[24]: http://www.mkdocs.org/user-guide/writing-your-docs/#markdown-extensions
|
|
|
|
|
[25]: extensions/admonition.md
|
|
|
|
|
[26]: extensions/codehilite.md
|
|
|
|
|
[27]: extensions/footnotes.md
|
|
|
|
|
[28]: extensions/metadata.md
|
|
|
|
|
[29]: extensions/permalinks.md
|
|
|
|
|
[30]: extensions/pymdown.md
|
2016-02-09 21:59:37 +01:00
|
|
|
|
|
|
|
|
|
## Full example
|
|
|
|
|
|
2016-08-07 18:01:56 +02:00
|
|
|
|
Below is a full example configuration for a `mkdocs.yml`:
|
2016-02-09 21:59:37 +01:00
|
|
|
|
|
|
|
|
|
``` yaml
|
|
|
|
|
# Project information
|
|
|
|
|
site_name: 'My Project'
|
|
|
|
|
site_description: 'A short description of my project'
|
|
|
|
|
site_author: 'John Doe'
|
2017-06-21 10:25:00 +02:00
|
|
|
|
site_url: 'https://john-doe.github.io/my-project'
|
2016-02-09 21:59:37 +01:00
|
|
|
|
|
|
|
|
|
# Repository
|
2017-03-11 17:24:03 +01:00
|
|
|
|
repo_name: 'my-github-handle/my-project'
|
2017-06-21 10:25:00 +02:00
|
|
|
|
repo_url: 'https://github.com/john-doe/my-project'
|
2016-02-09 21:59:37 +01:00
|
|
|
|
|
|
|
|
|
# Copyright
|
2017-02-24 22:53:12 +01:00
|
|
|
|
copyright: 'Copyright © 2016 - 2017 John Doe'
|
2016-02-09 21:59:37 +01:00
|
|
|
|
|
|
|
|
|
# Documentation and theme
|
|
|
|
|
theme: 'material'
|
|
|
|
|
|
|
|
|
|
# Options
|
|
|
|
|
extra:
|
2016-12-29 17:55:08 +01:00
|
|
|
|
logo: 'images/logo.svg'
|
2016-02-24 17:31:01 +01:00
|
|
|
|
palette:
|
|
|
|
|
primary: 'indigo'
|
2016-12-29 17:55:08 +01:00
|
|
|
|
accent: 'indigo'
|
2016-02-17 18:08:11 +01:00
|
|
|
|
font:
|
|
|
|
|
text: 'Roboto'
|
|
|
|
|
code: 'Roboto Mono'
|
2016-12-29 17:55:08 +01:00
|
|
|
|
social:
|
|
|
|
|
- type: 'github'
|
2017-02-24 22:53:12 +01:00
|
|
|
|
link: 'https://github.com/john-doe'
|
2016-12-29 17:55:08 +01:00
|
|
|
|
- type: 'twitter'
|
2017-06-21 10:25:00 +02:00
|
|
|
|
link: 'https://twitter.com/john-doe'
|
2016-12-29 17:55:08 +01:00
|
|
|
|
- type: 'linkedin'
|
2017-07-20 14:32:02 +02:00
|
|
|
|
link: 'https://linkedin.com/in/john-doe'
|
2016-02-09 21:59:37 +01:00
|
|
|
|
|
2016-03-12 13:21:06 +01:00
|
|
|
|
# Google Analytics
|
|
|
|
|
google_analytics:
|
|
|
|
|
- 'UA-XXXXXXXX-X'
|
|
|
|
|
- 'auto'
|
|
|
|
|
|
2016-02-09 21:59:37 +01:00
|
|
|
|
# Extensions
|
|
|
|
|
markdown_extensions:
|
|
|
|
|
- admonition
|
2016-12-29 17:55:08 +01:00
|
|
|
|
- codehilite(guess_lang=false)
|
|
|
|
|
- toc(permalink=true)
|
2016-02-09 21:59:37 +01:00
|
|
|
|
```
|