1. @mdit-vue/plugin-toc
A markdown-it plugin to generate table-of-contents that compatible with Vue.js
@mdit-vue/plugin-toc
Package: @mdit-vue/plugin-toc
Created by: mdit-vue
Last modified: Mon, 15 Apr 2024 16:16:45 GMT
Version: 2.1.2
License: MIT
Downloads: 74,901
Repository: https://github.com/mdit-vue/mdit-vue

Install

npm install @mdit-vue/plugin-toc
yarn add @mdit-vue/plugin-toc

@mdit-vue/plugin-toc

npm
license

A markdown-it plugin to generate table-of-contents (TOC) that compatible with Vue.js.

This plugin is basically a fork of markdown-it-toc-done-right, with following enhancement:

  • Allows html_inline tags in headings to support vue components.
  • Supports containerTag, listTag and linkTag.
  • Only allows array in level option.
  • Code refactor and optimizations.

Install

 npm i @mdit-vue/plugin-toc

Usage

 import { tocPlugin } from '@mdit-vue/plugin-toc';
import MarkdownIt from 'markdown-it';

const md = MarkdownIt({ html: true }).use(tocPlugin, {
  // options
});

Options

pattern

  • Type: RegExp

  • Default: /^\[\[toc\]\]$/i

  • Details:

    The pattern serving as the TOC placeholder in your markdown.

slugify

  • Type: (str: string) => string

  • Default: slugify from @mdit-vue/shared

  • Details:

    A custom slugification function.

    The default slugify function comes from @mdit-vue/shared package.

    When using this plugin with markdown-it-anchor (recommended), this option will be ignored because the id of the headings have already been determined by markdown-it-anchor's slugify option.

format

  • Type: (str: string) => string

  • Details:

    A function for formatting headings.

level

  • Type: number[]

  • Default: [2, 3]

  • Details:

    Heading level that going to be included in the TOC.

    When using this plugin with markdown-it-anchor (recommended), this option should be a subset of markdown-it-anchor's level option to ensure the target links are existed.

shouldAllowNested

  • Type: boolean

  • Default: false

  • Details:

    Should allow headers inside nested blocks or not.

    If set to true, headers inside blockquote, list, etc. would also be included.

containerTag

  • Type: string

  • Default: 'nav'

  • Details:

    HTML tag of the TOC container.

containerClass

  • Type: string

  • Default: 'table-of-contents'

  • Details:

    The class for the TOC container.

listTag

  • Type: 'ul' | 'ol'

  • Default: 'ul'

  • Details:

    HTML tag of the TOC list.

listClass

  • Type: string

  • Default: ''

  • Details:

    The class for the TOC list.

itemClass

  • Type: string

  • Default: ''

  • Details:

    The class for the <li> tag.

linkTag

  • Type: 'a' | 'router-link'

  • Default: 'a'

  • Details:

    The tag of the link inside the <li> tag.

    You can set this option to render to links as vue-router's router-link.

linkClass

  • Type: string

  • Default: ''

  • Details:

    The class for the link inside the <li> tag.

RELATED POST

10 Must-Know Windows Shortcuts That Will Save You Time

10 Must-Know Windows Shortcuts That Will Save You Time

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Navigating AWS Networking: Essential Hacks for Smooth Operation

Navigating AWS Networking: Essential Hacks for Smooth Operation

Achieving Stunning Visuals with Unity's Global Illumination

Achieving Stunning Visuals with Unity's Global Illumination

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code