Skip to content

Kometa-Team/mkdocs-include-markdown-plugin

This branch is 4 commits ahead of, 2 commits behind mondeja/mkdocs-include-markdown-plugin:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ead0c98 · Feb 10, 2025
Feb 5, 2025
Nov 29, 2024
Nov 29, 2024
Feb 10, 2025
Feb 9, 2025
Nov 30, 2022
Dec 18, 2022
Nov 18, 2024
Nov 29, 2024
Feb 5, 2025
Oct 14, 2024
Jul 31, 2023
Jan 4, 2025
Feb 10, 2025
Jul 31, 2023
Oct 22, 2024
Feb 9, 2025
Feb 5, 2025
Dec 1, 2022

Repository files navigation

mkdocs-include-markdown-plugin

PyPI License Tests Coverage status Downloads

Mkdocs Markdown includer plugin.

Read this document in other languages:

Installation

pip install mkdocs-include-markdown-plugin

Documentation

Setup

Enable the plugin in your mkdocs.yml:

plugins:
  - include-markdown

Configuration

The global behaviour of the plugin can be customized in the configuration.

Most of the settings will define the default values passed to arguments of directives and are documented in the reference.

plugins:
  - include-markdown:
      encoding: ascii
      preserve_includer_indent: false
      dedent: false
      trailing_newlines: true
      comments: true
      rewrite_relative_urls: true
      heading_offset: 0
      start: <!--start-->
      end: <!--end-->
      recursive: true

opening_tag and closing_tag

Default opening and closing tags. When not specified they are {% and %}.

plugins:
  - include-markdown:
      opening_tag: "{!"
      closing_tag: "!}"

exclude

Global exclusion wildcard patterns. Relative paths defined here will be relative to the docs_dir directory.

plugins:
  - include-markdown:
      exclude:
        - LICENSE.md
        - api/**

cache

Expiration time in seconds for cached HTTP requests when including from URLs.

plugins:
  - include-markdown:
      cache: 600

In order to use this feature, the dependency platformdirs must be installed or the setting cache_dir must be defined. You can include platformdirs in the installation of the plugin adding the cache extra:

# requirements.txt
mkdocs-include-markdown-plugin[cache]

cache_dir

Directory where cached HTTP requests will be stored. If set, platformdirs is not needed to be installed to use cache.

plugins:
  - include-markdown:
      cache: 600
      cache_dir: ./mkdocs-include-markdown-cache

A .gitignore file will be added to the cache directory if not exists to avoid committing the cache files.

directives

Customize the names of the directives.

plugins:
  - include-markdown:
      directives:
        include-markdown: include-md
        include: replace

Reference

This plugin provides two directives, one to include Markdown files and another to include files of any type.

Paths of included files can be either:

  • URLs to include remote content.
  • Local files:
    • Absolute paths (starting with a path separator).
    • Relative from the file that includes them (starting with ./ or ../).
    • Relative to the docs_dir directory. For instance if your docs_dir is ./docs/, then includes/header.md will match the file ./docs/includes/header.md.
  • Bash wildcard globs matching multiple local files.

File paths to include and string arguments can be wrapped by double " or single ' quotes, which can be escaped prepending them a \ character as \" and \'.

The arguments start and end may contain usual (Python-style) escape sequences like \n to match against newlines.

include-markdown

Includes Markdown files content, optionally using two delimiters to filter the content to include.

  • # start: Delimiter that marks the beginning of the content to include.
  • # end: Delimiter that marks the end of the content to include.
  • # preserve-includer-indent (true): When this option is enabled (default), every line of the content to include is indented with the same number of spaces used to indent the includer {% %} template. Possible values are true and false.
  • # dedent (false): If enabled, the included content will be dedented.
  • # exclude: Specify with a glob which files should be ignored. Only useful when passing globs to include multiple files.
  • # trailing-newlines (true): When this option is disabled, the trailing newlines found in the content to include are stripped. Possible values are true and false.
  • # recursive (true): When this option is disabled, included files are not processed for recursive includes. Possible values are true and false.
  • # encoding ('utf-8'): Specify the encoding of the included file. If not defined 'utf-8' will be used.
  • # rewrite-relative-urls (true): When this option is enabled (default), Markdown links and images in the content that are specified by a relative URL are rewritten to work correctly in their new location. Possible values are true and false.
  • # comments (false): When this option is enabled, the content to include is wrapped by <!-- BEGIN INCLUDE --> and <!-- END INCLUDE --> comments which help to identify that the content has been included. Possible values are true and false.
  • # heading-offset (0): Increases or decreases the Markdown headings depth by this number. Only supports number sign (#) heading syntax. Accepts negative values to drop leading # characters.
  • # replace: Replaces text in the Markdown. This translates a json string to a Dict where the keys are replaced by the values.
  • # replace-tags: Replaces text between tags in the Markdown. This translates a json string to a Dict where the keys are the tags to be replaced by the values. Tag of "test" will replace text surrounded by two instances of <!--test-->.
  • # exclude-tags: Excludes text between tags in the Markdown. This is a | separated string of tags to exclude. Tag of "test" will ignore text surrounded by two instances of <!--test-->.
  • # include-tags: Includes only the text between tags in the Markdown. This is a | separated string of tags to include. Tag of "test" looks for text surrounded by two instances of <!--test-->.
Examples
{%
    include-markdown "../README.md"
    start="<!--intro-start-->"
    end="<!--intro-end-->"
%}
{%
    include-markdown 'includes/header.md'
    start='<!--\n\ttable-start\n-->'
    end='<!--\n\ttable-end\n-->'
    rewrite-relative-urls=false
    comments=true
%}
{%
    include-markdown "includes/header.md"
    heading-offset=1
%}
{%
    include-markdown "includes/header.md"
    replace='{"Replace This Text": "With This Text"}'
%}
{%
    include-markdown "includes/header.md"
    replace='{"Replace This Text": "With This Text", "Also This Text": "With Also This Text"}'
%}
{%
    include-markdown "../LICENSE*"
    start="<!--license \"start\" -->"
    end='<!--license "end" -->'
    exclude="../*.rst"
%}
{%
    include-markdown "**"
    exclude="./{index,LICENSE}.md"
%}
{% include-markdown '/escap\'ed/single-quotes/in/file\'/name.md' %}

include

Includes the content of a file or a group of files.

  • # start: Delimiter that marks the beginning of the content to include.
  • # end: Delimiter that marks the end of the content to include.
  • # preserve-includer-indent (true): When this option is enabled (default), every line of the content to include is indented with the same number of spaces used to indent the includer {% %} template. Possible values are true and false.
  • # dedent (false): If enabled, the included content will be dedented.
  • # exclude: Specify with a glob which files should be ignored. Only useful when passing globs to include multiple files.
  • # trailing-newlines (true): When this option is disabled, the trailing newlines found in the content to include are stripped. Possible values are true and false.
  • # recursive (true): When this option is disabled, included files are not processed for recursive includes. Possible values are true and false.
  • # encoding ('utf-8'): Specify the encoding of the included file. If not defined 'utf-8' will be used.
  • # replace: Replaces text in the Markdown. This translates a json string to a Dict where the keys are replaced by the values.
  • # replace-tags: Replaces text between tags in the Markdown. This translates a json string to a Dict where the keys are the tags to be replaced by the values. Tag of "test" will replace text surrounded by two instances of <!--test-->.
  • # exclude-tags: Excludes text between tags in the Markdown. This is a | separated string of tags to exclude. Tag of "test" will ignore text surrounded by two instances of <!--test-->.
  • # include-tags: Includes only the text between tags in the Markdown. This is a | separated string of tags to include. Tag of "test" looks for text surrounded by two instances of <!--test-->.
Examples
~~~yaml
{% include "../examples/github-minimal.yml" %}
~~~
    {%
        include "../examples.md"
        start="~~~yaml"
        end="~~~\n"
    %}
{%
    include-markdown "includes/header.md"
    replace='{"Replace This Text": "With This Text"}'
%}
{%
    include-markdown "includes/header.md"
    replace='{"Replace This Text": "With This Text", "Also This Text": "With Also This Text"}'
%}
{%
    include '**'
    exclude='./*.md'
%}

Acknowledgment

About

Mkdocs Markdown includer plugin

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%