@host.today/ht-docker-mkdocs

Documentation for @host.today/ht-docker-mkdocs

docs/authors-notes.md for @host.today/ht-docker-mkdocs

Author's notes

Hi, I'm Martin (@squidfunk)

I'm a freelance polyglot software engineer and entrepreneur from Cologne, Germany with more than 12 years of experience in full-stack web development and system programming. If you're interested in my projects, please see my CV.

Why another theme?

Some time ago I wanted to release a project to the open, but it was in need of user documentation. I checked out the available tools and stuck with MkDocs, because it was so simple and easy to use. However, none of the available themes convinced me.

I wanted to build something that was usable on all screen sizes from the ground up, something beautiful and practical at the same time. Google's Material Design appeared to be the perfect fit and this something became Material, a Material Design theme for MkDocs.

docs/compliance.md for @host.today/ht-docker-mkdocs

Compliance with GDPR

Material does not process any personal data

Material is a theme for MkDocs, a static site generator. In itself, Material does not perform any tracking or processing of personal data. However, some of the third-party services that Material integrates with may actually be in breach with the General Data Protection Regulation (GDPR) and need to be evaluated carefully.

Third-party services

Google Fonts

Material makes fonts easily configurable by relying on Google Fonts CDN. However, embedding fonts from Google is currently within a gray area as there's no official statement or ruling regarding GDPR compliance and the topic is still actively discussed. For this reason, if you need to ensure GDPR compliance, you should disable the usage of the Google Font CDN with:

theme:
  font: false

When Google Fonts are disabled, Material will default to Helvetica Neue and Monaco with their corresponding fall backs, relying on system fonts. You could however include your own, self-hosted webfont by overriding the fonts block.

The icon fonts (Material and FontAwesome) are bundled with the theme, and thus self-hosted so there's no third-party involved.

Google Analytics and Disqus

Material comes with Google Analytics and Disqus integrations that need to be enabled explicitly. Disable both integrations in order to be in compliance with the GDPR.

docs/contributing.md for @host.today/ht-docker-mkdocs

Contributing

Interested in contributing to the Material theme? Want to report a bug? Before you do, please read the following guidelines.

Submission context

Got a question or problem?

For quick questions there's no need to open an issue as you can reach us on gitter.im.

Found a bug?

If you found a bug in the source code, you can help us by submitting an issue to the issue tracker in our GitHub repository. Even better, you can submit a Pull Request with a fix. However, before doing so, please read the submission guidelines.

Missing a feature?

You can request a new feature by submitting an issue to our GitHub Repository. If you would like to implement a new feature, please submit an issue with a proposal for your work first, to be sure that it is of use for everyone, as the Material theme is highly opinionated. Please consider what kind of change it is:

Submission guidelines

Submitting an issue

Before you submit an issue, please search the issue tracker, maybe an issue for your problem already exists and the discussion might inform you of workarounds readily available.

We want to fix all the issues as soon as possible, but before fixing a bug we need to reproduce and confirm it. In order to reproduce bugs we will systematically ask you to provide a minimal reproduction scenario using the custom issue template. Please stick to the issue template.

Unfortunately we are not able to investigate / fix bugs without a minimal reproduction scenario, so if we don't hear back from you we may close the issue.

Submitting a Pull Request (PR)

Search GitHub for an open or closed PR that relates to your submission. You don't want to duplicate effort. If you do not find a related issue or PR, go ahead.

  1. Development: Fork the project, set up the development environment, make your changes in a separate git branch and add descriptive messages to your commits.

  2. Build: Before submitting a pull requests, build the theme. This is a mandatory requirement for your PR to get accepted, as the theme should at all times be installable through GitHub.

  3. Pull Request: After building the theme, commit the compiled output, push your branch to GitHub and send a PR to mkdocs-material:master. If we suggest changes, make the required updates, rebase your branch and push the changes to your GitHub repository, which will automatically update your PR.

After your PR is merged, you can safely delete your branch and pull the changes from the main (upstream) repository.

docs/customization.md for @host.today/ht-docker-mkdocs

Customization

A great starting point

Project documentation is as diverse as the projects themselves and the Material theme is a good starting point for making it look great. However, as you write your documentation, you may reach a point where some small adjustments are necessary to preserve the desired style.

Adding assets

MkDocs provides several ways to interfere with themes. In order to make a few tweaks to an existing theme, you can just add your stylesheets and JavaScript files to the docs directory.

Additional stylesheets

If you want to tweak some colors or change the spacing of certain elements, you can do this in a separate stylesheet. The easiest way is by creating a new stylesheet file in your docs directory:

mkdir docs/stylesheets
touch docs/stylesheets/extra.css

Then, add the following line to your mkdocs.yml:

extra_css:
  - 'stylesheets/extra.css'

Spin up the development server with mkdocs serve and start typing your changes in your additional stylesheet file – you can see them instantly after saving, as the MkDocs development server implements live reloading.

Additional JavaScript

The same is true for additional JavaScript. If you want to integrate another syntax highlighter or add some custom logic to your theme, create a new JavaScript file in your docs directory:

mkdir docs/javascripts
touch docs/javascripts/extra.js

Then, add the following line to your mkdocs.yml:

extra_javascript:
  - 'javascripts/extra.js'

Further assistance can be found in the MkDocs documentation.

Extending the theme

If you want to alter the HTML source (e.g. add or remove some part), you can extend the theme. From version 0.16 on MkDocs implements theme extension, an easy way to override parts of a theme without forking and changing the main theme.

Setup and theme structure

Reference the Material theme as usual in your mkdocs.yml, and create a new folder for overrides, e.g. theme, which you reference using custom_dir:

theme:
  name: 'material'
  custom_dir: 'theme'

!!! warning "Theme extension prerequisites"

As the `custom_dir` variable is used for the theme extension process, the
Material theme needs to be installed via `pip` and referenced with the
`name` parameter in your `mkdocs.yml`.

The structure in the theme directory must mirror the directory structure of the original theme, as any file in the theme directory will replace the file with the same name which is part of the original theme. Besides, further assets may also be put in the theme directory.

The directory layout of the Material theme is as follows:

.
├─ assets/
│  ├─ images/                          # Images and icons
│  ├─ javascripts/                     # JavaScript
│  └─ stylesheets/                     # Stylesheets
├─ partials/
│  ├─ integrations/                    # 3rd-party integrations
│  ├─ language/                        # Localized languages
│  ├─ footer.html                      # Footer bar
│  ├─ header.html                      # Header bar
│  ├─ hero.html                        # Hero teaser
│  ├─ language.html                    # Localized labels
│  ├─ nav-item.html                    # Main navigation item
│  ├─ nav.html                         # Main navigation
│  ├─ search.html                      # Search box
│  ├─ social.html                      # Social links
│  ├─ source.html                      # Repository information
│  ├─ tabs-item.html                   # Tabs navigation item
│  ├─ tabs.html                        # Tabs navigation
│  ├─ toc-item.html                    # Table of contents item
│  └─ toc.html                         # Table of contents
├─ 404.html                            # 404 error page
├─ base.html                           # Base template
└─ main.html                           # Default page

Overriding partials

In order to override the footer, we can replace the footer.html partial with our own partial. To do this, create the file partials/footer.html in the theme directory. MkDocs will now use the new partial when rendering the theme. This can be done with any file.

Overriding template blocks

Besides overriding partials, one can also override so called template blocks, which are defined inside the Material theme and wrap specific features. To override a template block, create a main.html inside the theme directory and define the block, e.g.:

{% extends "base.html" %}

{% block htmltitle %}
  <title>Lorem ipsum dolor sit amet</title>
{% endblock %}

The Material theme provides the following template blocks:

Block name Wrapped contents
analytics Wraps the Google Analytics integration
content Wraps the main content
disqus Wraps the disqus integration
extrahead Empty block to define additional meta tags
fonts Wraps the webfont definitions
footer Wraps the footer with navigation and copyright
header Wraps the fixed header bar
hero Wraps the hero teaser
htmltitle Wraps the <title> tag
libs Wraps the JavaScript libraries, e.g. Modernizr
scripts Wraps the JavaScript application logic
source Wraps the linked source files
site_meta Wraps the meta tags in the document head
site_nav Wraps the site navigation and table of contents
styles Wraps the stylesheets (also extra sources)

For more on this topic refer to the MkDocs documentation

Theme development

The Material theme uses Webpack as a build tool to leverage modern web technologies like Babel and SASS. If you want to make more fundamental changes, it may be necessary to make the adjustments directly in the source of the Material theme and recompile it. This is fairly easy.

Environment setup

In order to start development on the Material theme, a Node.js version of at least 8 is required. First, clone the repository:

git clone https://github.com/squidfunk/mkdocs-material

Next, all dependencies need to be installed, which is done with:

cd mkdocs-material
pip install -r requirements.txt
npm install

Development mode

The development server can be started with:

npm run watch

This will also start the MkDocs development server which will monitor changes on assets, templates and documentation. Point your browser to localhost:8000 and you should see this documentation in front of you.

For example, changing the color palette is as simple as changing the $md-color-primary and $md-color-accent variables in src/assets/stylesheets/_config.scss:

$md-color-primary: $clr-red-400;
$md-color-accent:  $clr-teal-a700;

!!! warning "Automatically generated files"

Never make any changes in the `material` directory, as the contents of this
directory are automatically generated from the `src` directory and will be
overridden when the theme is built.

Build process

When you've finished making your changes, you can build the theme by invoking:

npm run build

This triggers the production-level compilation and minification of all stylesheets and JavaScript sources. When the command exits, the final theme is located in the material directory. Add the theme_dir variable pointing to the aforementioned directory in your original mkdocs.yml.

Now you can run mkdocs build and you should see your documentation with your changes to the original Material theme.

docs/getting-started.md for @host.today/ht-docker-mkdocs

Getting started

Installation

Installing MkDocs

Before installing MkDocs, you need to make sure you have Python and pip – the Python package manager – up and running. You can verify if you're already good to go with the following commands:

python --version
# Python 2.7.13
pip --version
# pip 9.0.1

Installing and verifying MkDocs is as simple as:

pip install mkdocs && mkdocs --version
# mkdocs, version 0.17.1

Material requires MkDocs >= 0.17.1.

Installing Material

using pip

Material can be installed with pip:

pip install mkdocs-material

using choco

If you're on Windows you can use Chocolatey to install Material:

choco install mkdocs-material

This will install all required dependencies like Python and MkDocs.

cloning from GitHub

Material can also be used without a system-wide installation by cloning the repository into a subfolder of your project's root directory:

git clone https://github.com/squidfunk/mkdocs-material.git

This is especially useful if you want to extend the theme and override some parts of the theme. The theme will reside in the folder mkdocs-material/material.

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
the adequate permissions. There are two possible solutions for this:

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'"

If you run into this error, the most common reason is that you installed
MkDocs through some package manager (e.g. Homebrew or `apt-get`) and the
Material theme through `pip`, so both packages end up in different
locations. MkDocs only checks its install location for themes.

Alternative: Using Docker

If you're familiar with Docker, the official Docker image for Material comes with all dependencies pre-installed and ready-to-use with the latest version published on PyPI, packaged in a very small image. Pull it with:

docker pull squidfunk/mkdocs-material

The mkdocs executable is provided as an entrypoint, serve is the default command. Start the development server in your project root with:

docker run --rm -it -p 8000:8000 -v ${PWD}:/docs squidfunk/mkdocs-material

If you're using Windows command prompt (cmd.exe), substitute ${PWD} with "%cd%".

Usage

In order to enable the theme just add one of the following lines to your project's mkdocs.yml. If you installed Material using a package manager:

theme:
  name: 'material'

If you cloned Material from GitHub:

theme:
  name: null
  custom_dir: 'mkdocs-material/material'

MkDocs includes a development server, so you can review your changes as you go. The development server can be started with the following command:

mkdocs serve

Now you can point your browser to http://localhost:8000 and the Material theme should be visible. From here on, you can start writing your documentation, or read on and customize the theme.

Configuration

Color palette

A default hue is defined for every primary and accent color on Google's Material Design color palette, which makes it very easy to change the overall look of the theme. Just set the primary and accent colors using the following variables:

theme:
  palette:
    primary: 'indigo'
    accent: 'indigo'

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, blue grey and white. The last four colors can only be used as a primary color.

If the color is set via this configuration, an additional CSS file that 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 for more information.

Primary colors

Default: indigo

Click on a tile to change the primary color of the theme:

Accent colors

Default: indigo

Click on a tile to change the accent color of the theme:

Font family

Default: Roboto and Roboto Mono

By default the Roboto font family 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 and can be changed to other fonts, like for example the Ubuntu font family:

theme:
  font:
    text: 'Ubuntu'
    code: 'Ubuntu Mono'

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:

theme:
  font: false

Default icon: school

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:

theme:
  logo: 'images/logo.svg'

Additionally, the default icon can be changed by setting an arbitrary ligature (or Unicode code point) from the Material Design icon font, e.g.

theme:
  logo:
    icon: 'cloud'

Language

!!! info "Call for Contributions: Add languages/translations to Material"

Help translate Material into more languages - it's just **one click** and
takes approximately **2 minutes**: [click here](http://bit.ly/2EbzFc8)

Localization

Default: en

Material for MkDocs supports internationalization (i18n) and provides translations for all template variables and labels in the following languages:

Available languages
ar / Arabic ca / Catalan cs / Czech da / Danish
nl / Dutch en / English fi / Finnish fr / French
gl / Galician de / German gr / Greek he / Hebrew
hi / Hindi hr / Croatian hu / Hungarian id / Indonesian
it / Italian ja / Japanese kr / Korean no / Norwegian
nn / Norwegian (Nynorsk) fa / Persian pl / Polish
pt / Portugese ru / Russian sr / Serbian sh / Serbo-Croatian
sk / Slovak es / Spanish sv / Swedish tr / Turkish
uk / Ukrainian vi / Vietnamese zh / Chinese (Simplified)
zh-Hant / Chinese (Traditional) zh-TW / Chinese (Taiwanese)
Submit a new language

Specify the language with:

theme:
  language: 'en'

If the language is not specified, Material falls back to English. To create a translation for another language, copy the localization file of an existing language, name the new file using the 2-letter language code and adjust all translations:

cp partials/language/en.html partials/language/jp.html

Text direction

Default: best match for given theme language, automatically set

Material supports both, left-to-right (ltr) and right-to-left (rtl) text direction. This enables more languages like Arabic, Hebrew, Syriac and others to be used with the theme:

theme:
  direction: 'rtl'

Default: best match for given theme language, automatically set

Site search is implemented using lunr.js, which includes stemmers for the English language by default, while stemmers for other languages are included with lunr-languages, both of which are integrated with this theme. Material selects the matching (or best-matching) stemmer for the given theme language. Multilingual search can be activated in your project's mkdocs.yml by explicitly defining the search language(s):

extra:
  search:
    language: 'en, de, ru'

At the time of writing, the following languages are supported:

Available language stemmers
da / Danish du / Dutch en / English fi / Finnish
fr / French de / German hu / Hungarian it / Italian
ja / Japanese no / Norwegian pt / Portugese ro / Romanian
ru / Russian es / Spanish sv / Swedish tr / Turkish

!!! warning "MkDocs 1.0 compatibility"

While MkDocs 1.0 supports prebuilding the search index, Material currently
doesn't support this setting as the default search behavior of the original
theme was heavily modified for the sake of a better UX. Integration is
possible, but a small subset of the features Material provides will not be
portable to the prebuilt index mainly due to missing localization.

!!! warning "Only specify the languages you really need"

Be aware that including support for other languages increases the general
JavaScript payload by around 20kb (without gzip) and by another 15-30kb per
language.

The separator for tokenization can be customized which makes it possible to index parts of words that are separated by - or .:

extra:
  search:
    tokenizer: '[\s\-\.]+'

Favicon

Default: assets/images/favicon.png

The default favicon can be changed by setting the favicon variable to an .ico or image file:

theme:
  favicon: 'assets/images/favicon.ico'

Features

Tabs

Default: false

By default, the entire navigation is rendered on the left side using collapsible sections (different from the default MkDocs theme which renders the top-level sections in the header), because horizontal navigation is often problematic on smaller screens. However, for large documentation projects it's sometimes desirable to add another navigation layer to separate top-level sections. Material achieves this with the tabs feature, which can be enabled by setting the respective feature flag to true:

theme:
  feature:
    tabs: true

When tabs are enabled, top-level sections will be rendered in an additional layer directly below the header. The navigation on the left side will only include the pages contained within the selected section. Furthermore, top-level pages defined inside your project's mkdocs.yml will be grouped under the first tab which will receive the title of the first page.

Customization

Adding a source repository

repo_name: 'squidfunk/mkdocs-material'
repo_url: 'https://github.com/squidfunk/mkdocs-material'

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. Furthermore, if repo_url points to a GitHub, BitBucket or GitLab repository, the respective service logo will be shown next to the name of the repository. Additionally, for GitHub, the number of stars and forks is shown.

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.

!!! question "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
`repo_name` is set to *GitHub* or *BitBucket* (implied by default), an
edit button will appear at the top of every article. This is the automatic
behavior that MkDocs implements. See the [MkDocs documentation][19] on more
guidance regarding the `edit_uri` attribute, which defines whether the edit
button is shown or not.

Social accounts can be linked in the footer of the documentation using the automatically included FontAwesome 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:

extra:
  social:
    - type: 'github'
      link: 'https://github.com/squidfunk'
    - type: 'twitter'
      link: 'https://twitter.com/squidfunk'
    - type: 'linkedin'
      link: 'https://linkedin.com/in/squidfunk'

Adding a Web App Manifest

A Web App Manifest is a simple JSON file that tells the browser about your web application and how it should behave when installed on the user's mobile device or desktop. You can specify a manifest in your mkdocs.yml:

extra:
  manifest: 'manifest.webmanifest'

More advanced customization

If you want to change the general appearance of the Material theme, see this article for more information on advanced customization.

Integrations

Google Analytics

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:

google_analytics:
  - 'UA-XXXXXXXX-X'
  - 'auto'

Disqus

Material for MkDocs is integrated with Disqus, so if you want to add a comments section to your documentation set the shortname of your Disqus project in your mkdocs.yml:

extra:
  disqus: 'your-shortname'

The comments section is inserted on 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.

!!! warning "Requirements"

`site_url` value must be set in `mkdocs.yml` for the Disqus integration to
load properly.

Disqus can also be enabled or disabled for specific pages using Metadata.

Extensions

MkDocs supports several Markdown extensions. The following extensions 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:

markdown_extensions:
  - admonition
  - codehilite:
      guess_lang: false
  - toc:
      permalink: true

For more information, see the following list of extensions supported by the Material theme including more information regarding installation and usage:

Full example

Below is a full example configuration for a mkdocs.yml:

# Project information
site_name: 'Material for MkDocs'
site_description: 'A Material Design theme for MkDocs'
site_author: 'Martin Donath'
site_url: 'https://squidfunk.github.io/mkdocs-material/'

# Repository
repo_name: 'squidfunk/mkdocs-material'
repo_url: 'https://github.com/squidfunk/mkdocs-material'

# Copyright
copyright: 'Copyright &copy; 2016 - 2017 Martin Donath'

# Configuration
theme:
  name: 'material'
  language: 'en'
  palette:
    primary: 'indigo'
    accent: 'indigo'
  font:
    text: 'Roboto'
    code: 'Roboto Mono'

# Customization
extra:
  manifest: 'manifest.webmanifest'
  social:
    - type: 'github'
      link: 'https://github.com/squidfunk'
    - type: 'twitter'
      link: 'https://twitter.com/squidfunk'
    - type: 'linkedin'
      link: 'https://linkedin.com/in/squidfunk'

# Google Analytics
google_analytics:
  - 'UA-XXXXXXXX-X'
  - 'auto'

# Extensions
markdown_extensions:
  - admonition
  - codehilite:
      guess_lang: false
  - toc:
      permalink: true

docs/index.md for @host.today/ht-docker-mkdocs

Material for MkDocs

Create beautiful project documentation

Material is a theme for MkDocs, an excellent static site generator geared towards project documentation. It is built using Google's Material Design guidelines.

Material for MkDocs

Quick start

Install the latest version of Material with pip:

pip install mkdocs-material

Append the following line to your project's mkdocs.yml:

theme:
  name: 'material'

What to expect

For detailed instructions see the getting started guide.

docs/license.md for @host.today/ht-docker-mkdocs

License

MIT License

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

docs/release-notes.md for @host.today/ht-docker-mkdocs

Release notes

Upgrading

To upgrade Material to the latest version, use pip:

pip install --upgrade mkdocs-material

To inspect the currently installed version, use the following command:

pip show mkdocs-material

Material 3.x to 4.x

Material 2.x to 3.x

Material 1.x to 2.x

Changelog

4.2.0 _ April 28, 2019

4.1.2 _ April 16, 2019

4.1.1 _ March 28, 2019

4.1.0 _ March 22, 2019

4.0.2 _ March 1, 2019

4.0.1 _ February 13, 2019

4.0.0 _ February 13, 2019

3.3.0 _ January 29, 2019

3.2.0 _ December 28, 2018

3.1.0 _ November 17, 2018

3.0.6 _ October 26, 2018

3.0.5 _ October 23, 2018

3.0.4 _ September 3, 2018

3.0.3 _ August 7, 2018

3.0.2 _ August 6, 2018

3.0.1 _ August 5, 2018

3.0.0 _ August 5, 2018

2.9.4 _ July 29, 2018

2.9.3 _ July 29, 2018

2.9.2 _ June 29, 2018

2.9.1 _ June 18, 2018

2.9.0 _ June 13, 2018

2.8.0 _ June 10, 2018

2.7.3 _ April 26, 2018

2.7.2 _ April 9, 2018

2.7.1 _ March 21, 2018

2.7.0 _ March 6, 2018

2.6.6 _ February 22, 2018

2.6.5 _ February 22, 2018

2.6.4 _ February 21, 2018

2.6.3 _ February 18, 2018

2.6.2 _ February 12, 2018

2.6.1 _ February 11, 2018

2.6.0 _ February 2, 2018

2.5.5 _ January 31, 2018

2.5.4 _ January 29, 2018

2.5.3 _ January 25, 2018

2.5.2 _ January 22, 2018

2.5.1 _ January 20, 2018

2.5.0 _ January 13, 2018

2.4.0 _ January 11, 2018

2.3.0 _ January 9, 2018

2.2.6 _ December 27, 2017

2.2.5 _ December 18, 2017

2.2.4 _ December 18, 2017

2.2.3 _ December 13, 2017

2.2.2 _ December 8, 2017

2.2.1 _ December 2, 2017

2.2.0 _ November 22, 2017

2.1.1 _ November 21, 2017

2.1.0 _ November 19, 2017

2.0.4 _ November 5, 2017

2.0.3 _ November 5, 2017

2.0.2 _ November 1, 2017

2.0.1 _ October 31, 2017

2.0.0 _ October 31, 2017

1.12.2 _ October 26, 2017

1.12.1 _ October 22, 2017

1.12.0 _ October 20, 2017

1.11.0 _ October 19, 2017

1.10.4 _ October 18, 2017

1.10.3 _ October 11, 2017

1.10.2 _ October 6, 2017

1.10.1 _ September 14, 2017

1.10.0 _ September 1, 2017

1.9.0 _ August 29, 2017

1.8.1 _ August 7, 2017

1.8.0 _ August 2, 2017

1.7.5 _ July 25, 2017

1.7.4 _ June 21, 2017

1.7.3 _ June 7, 2017

1.7.2 _ June 6, 2017

1.7.1 _ June 1, 2017

1.7.0 _ June 1, 2017

1.6.4 _ May 24, 2017

1.6.3 _ May 16, 2017

1.6.2 _ May 15, 2017

1.6.1 _ April 23, 2017

1.6.0 _ April 22, 2017

1.5.5 _ April 20, 2017

1.5.4 _ April 8, 2017

1.5.3 _ April 7, 2017

1.5.2 _ April 5, 2017

1.5.1 _ March 30, 2017

1.5.0 _ March 24, 2017

1.4.1 _ March 16, 2017

1.4.0 _ March 16, 2017

1.3.0 _ March 11, 2017

1.2.0 _ March 3, 2017

1.1.1 _ February 26, 2017

1.1.0 _ February 26, 2017

1.0.5 _ February 18, 2017

1.0.4 _ February 16, 2017

1.0.3 _ January 22, 2017

1.0.2 _ January 15, 2017

1.0.1 _ January 14, 2017

1.0.0 _ January 13, 2017

0.2.4 _ June 26, 2016

0.2.3 _ May 16, 2016

0.2.2 _ March 20, 2016

0.2.1 _ March 12, 2016

0.2.0 _ February 24, 2016

0.1.3 _ February 21, 2016

0.1.2 _ February 16, 2016

0.1.1 _ February 11, 2016

0.1.0 _ February 9, 2016

docs/specimen.md for @host.today/ht-docker-mkdocs

Specimen

Body copy

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras arcu libero, mollis sed massa vel, ornare viverra ex. Mauris a ullamcorper lacus. Nullam urna elit, malesuada eget finibus ut, ullamcorper ac tortor. Vestibulum sodales pulvinar nisl, pharetra aliquet est. Quisque volutpat erat ac nisi accumsan tempor.

Sed suscipit, orci non pretium pretium, quam mi gravida metus, vel venenatis justo est condimentum diam. Maecenas non ornare justo. Nam a ipsum eros. Nulla aliquam orci sit amet nisl posuere malesuada. Proin aliquet nulla velit, quis ultricies orci feugiat et. Ut tincidunt sollicitudin tincidunt. Aenean ullamcorper sit amet nulla at interdum.

Headings

The 3rd level

The 4th level

The 5th level
The 6th level

Headings with secondary text

The 3rd level with secondary text

The 4th level with secondary text

The 5th level with secondary text
The 6th level with secondary text

Blockquotes

Morbi eget dapibus felis. Vivamus venenatis porttitor tortor sit amet rutrum. Pellentesque aliquet quam enim, eu volutpat urna rutrum a. Nam vehicula nunc mauris, a ultricies libero efficitur sed. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed molestie imperdiet consectetur.

Blockquote nesting

Sed aliquet, neque at rutrum mollis, neque nisi tincidunt nibh, vitae faucibus lacus nunc at lacus. Nunc scelerisque, quam id cursus sodales, lorem libero fermentum urna, ut efficitur elit ligula et nunc.

Mauris dictum mi lacus, sit amet pellentesque urna vehicula fringilla. Ut sit amet placerat ante. Proin sed elementum nulla. Nunc vitae sem odio. Suspendisse ac eros arcu. Vivamus orci erat, volutpat a tempor et, rutrum. eu odio.

Suspendisse rutrum facilisis risus, eu posuere neque commodo a. Interdum et malesuada fames ac ante ipsum primis in faucibus. Sed nec leo bibendum, sodales mauris ut, tincidunt massa.

Other content blocks

Vestibulum vitae orci quis ante viverra ultricies ut eget turpis. Sed eu lectus dapibus, eleifend nulla varius, lobortis turpis. In ac hendrerit nisl, sit amet laoreet nibh.

var _extends = function(target) {
  for (var i = 1; i < arguments.length; i++) {
    var source = arguments[i];
    for (var key in source) {
      target[key] = source[key];
    }
  }
  return target;
};

Praesent at :::js return target, sodales nibh vel, tempor felis. Fusce vel lacinia lacus. Suspendisse rhoncus nunc non nisi iaculis ultrices. Donec consectetur mauris non neque imperdiet, eget volutpat libero.

Lists

Unordered lists

Ordered lists

  1. Integer vehicula feugiat magna, a mollis tellus. Nam mollis ex ante, quis elementum eros tempor rutrum. Aenean efficitur lobortis lacinia. Nulla consectetur feugiat sodales.

  2. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam ornare feugiat quam et egestas. Nunc id erat et quam pellentesque lacinia eu vel odio.

    1. Vivamus venenatis porttitor tortor sit amet rutrum. Pellentesque aliquet quam enim, eu volutpat urna rutrum a. Nam vehicula nunc mauris, a ultricies libero efficitur sed.

      1. Mauris dictum mi lacus
      2. Ut sit amet placerat ante
      3. Suspendisse ac eros arcu
    2. Morbi eget dapibus felis. Vivamus venenatis porttitor tortor sit amet rutrum. Pellentesque aliquet quam enim, eu volutpat urna rutrum a. Sed aliquet, neque at rutrum mollis, neque nisi tincidunt nibh.

    3. Pellentesque eget :::js var _extends ornare tellus, ut gravida mi.

    var _extends = function(target) {
      for (var i = 1; i < arguments.length; i++) {
        var source = arguments[i];
        for (var key in source) {
          target[key] = source[key];
        }
      }
      return target;
    };
    
  3. Vivamus id mi enim. Integer id turpis sapien. Ut condimentum lobortis sagittis. Aliquam purus tellus, faucibus eget urna at, iaculis venenatis nulla. Vivamus a pharetra leo.

Definition lists

Lorem ipsum dolor sit amet

: Sed sagittis eleifend rutrum. Donec vitae suscipit est. Nullam tempus tellus non sem sollicitudin, quis rutrum leo facilisis. Nulla tempor lobortis orci, at elementum urna sodales vitae. In in vehicula nulla.

Duis mollis est eget nibh volutpat, fermentum aliquet dui mollis.
Nam vulputate tincidunt fringilla.
Nullam dignissim ultrices urna non auctor.

Cras arcu libero

: Aliquam metus eros, pretium sed nulla venenatis, faucibus auctor ex. Proin ut eros sed sapien ullamcorper consequat. Nunc ligula ante, fringilla at aliquam ac, aliquet sed mauris.

Code blocks

Inline

Morbi eget dapibus felis. Vivamus venenatis porttitor tortor sit amet rutrum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Pellentesque aliquet quam enim, eu volutpat urna rutrum a.

Nam vehicula nunc :::js return target mauris, a ultricies libero efficitur sed. Sed molestie imperdiet consectetur. Vivamus a pharetra leo. Pellentesque eget ornare tellus, ut gravida mi. Fusce vel lacinia lacus.

Listing

#!js hl_lines="8"
var _extends = function(target) {
  for (var i = 1; i < arguments.length; i++) {
    var source = arguments[i];
    for (var key in source) {
      target[key] = source[key];
    }
  }
  return target;
};

Horizontal rules

Aenean in finibus diam. Duis mollis est eget nibh volutpat, fermentum aliquet dui mollis. Nam vulputate tincidunt fringilla. Nullam dignissim ultrices urna non auctor.


Integer vehicula feugiat magna, a mollis tellus. Nam mollis ex ante, quis elementum eros tempor rutrum. Aenean efficitur lobortis lacinia. Nulla consectetur feugiat sodales.

Data tables

Sollicitudo / Pellentesi consectetur adipiscing elit arcu sed
Vivamus a pharetra yes yes yes yes yes
Ornare viverra ex yes yes yes yes yes
Mauris a ullamcorper yes yes partial yes yes
Nullam urna elit yes yes yes yes yes
Malesuada eget finibus yes yes yes yes yes
Ullamcorper yes yes yes yes yes
Vestibulum sodales yes - yes - yes
Pulvinar nisl yes yes yes - -
Pharetra aliquet est yes yes yes yes yes
Sed suscipit yes yes yes yes yes
Orci non pretium yes partial - - -

Sed sagittis eleifend rutrum. Donec vitae suscipit est. Nullam tempus tellus non sem sollicitudin, quis rutrum leo facilisis. Nulla tempor lobortis orci, at elementum urna sodales vitae. In in vehicula nulla, quis ornare libero.

Left Center Right
Lorem dolor amet
ipsum sit

Vestibulum vitae orci quis ante viverra ultricies ut eget turpis. Sed eu lectus dapibus, eleifend nulla varius, lobortis turpis. In ac hendrerit nisl, sit amet laoreet nibh.

Table with colgroups (Pandoc)
Lorem ipsum dolor sit amet.
Sed sagittis eleifend rutrum. Donec vitae suscipit est.