Leisn.MarkdigToc
0.1.3
dotnet add package Leisn.MarkdigToc --version 0.1.3
NuGet\Install-Package Leisn.MarkdigToc -Version 0.1.3
<PackageReference Include="Leisn.MarkdigToc" Version="0.1.3" />
paket add Leisn.MarkdigToc --version 0.1.3
#r "nuget: Leisn.MarkdigToc, 0.1.3"
// Install Leisn.MarkdigToc as a Cake Addin #addin nuget:?package=Leisn.MarkdigToc&version=0.1.3 // Install Leisn.MarkdigToc as a Cake Tool #tool nuget:?package=Leisn.MarkdigToc&version=0.1.3
MarkdigToc
MarkdigToc is a extension for Markdig to generate table of content by parse [toc] in markdown document.
Currently just for render to html.
Usage
Use with default options:
var pipeline = new MarkdownPipelineBuilder()
.UseAdvancedExtensions() // Add most of all advanced extensions
.UseTableOfContent() //Add MarkdigToc extension
.Build();
var result=Markdown.ToHtml(@"
[TOC]
# t1
## t1.1
### t1.1.1
### t1.1.2
## t1.2
");
Console.WriteLine(result);
Use with custom options:
var pipeline = new MarkdownPipelineBuilder().UseAdvancedExtensions()
.UseTableOfContent(
tocAction: opt=>{ // toc options },
idAction: opt=>{ // auto id options }
).Build();
// ...
Options
CustomAutoIdOptions
Code copied from AutoIdentifierExtension
, then added some code and options.
NOTICE: When use
UseTableOfContent
, it will auto replace (AutoIdentifierExtension
) or add (CustomAutoIdExtension
).
AutoIdentifierOptions
Options:Enum: default AutoIdentifierOptions.Default
Option from
AutoIdentifierExtension
:- None
- AutoLink
- AllowOnlyAscii
- Default
- Github
GenerateHeadingId?
HeadingIdGenerator:Delegate: defalut null
Delegate for handle custom heading id creation.
Arguments:
level:
int
The level of current heading, usually be count of char #.
content:
string
The content of current heading.
id:
string?
Not null if already defined id in markdown strings.
e.g. title-id for
# title {#title-id}
NOTICE: In order to parse attributes, need
UseGenericAttributes
extension after all of other extensions which you want parse.
TocOptions
Specials
IsUlOnlyContainLi
:bool: default true
According to webhint ,
ul
andol
must only directly containli
,script
ortemplate
elements.Set false to mix
ul
andli
like others do (generate less code).TitleAsConainerHeader
:bool: default false
Put the tile in
ContainerTag
not inside theTocTag
NOTICE: working only
ContainerTag
is not null.
TOC Container
ContainerTag
:string? : default null
If this is not null, the toc will put in a element use
ContainerTag
.ContainerId
:string? : default null
Id attribute for
ContainerTag
.ContainerClass
:string? : default null
Class attribute for
ContainerTag
. e.g."class1 class2"
TOC Element
TocTag
:string : default nav
Tag name for toc element.
TocId
:string? : default null
Id attribute for
TocTag
.TocClass
:string? : default null
Class attribute for
TocTag
. e.g."class1 class2"
TOC Title
NOTICE: I also parse toc title and use it's attributes from markdown document , but that is not a regular syntax, you should know that.
OverrideTitle
:string? : default null
Override toc title , ignore defined in markdown document.
TitleTag
:string : default p
Tag name for toc title element.
TitleId
:string? : default null
Id attribute for
TitleTag
.TitleClass
:string? : default null
Class attribute for
TitleTag
. e.g."class1 class2"
TOC Items
ulClass
:string? : default p
Class attribute for
ul
element.liClass
:string? : default null
Class attribute for
li
element.aClass
:string? : default null
Class attribute for
a
element.
Others
Markdown document:
[TOC]
##### t5
#### t4
### t3
## t2
# t1
## t2
### t3
#### t4
##### t5
IsUlOnlyContainLi=true
:
●
○
■
■
■ t5
■ t4
■ t3
○ t2
● t1
○ t2
■ t3
■ t4
■ t5
IsUlOnlyContainLi=false
:
■ t5
■ t4
■ t3
○ t2
● t1
○ t2
■ t3
■ t4
■ t5
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 is compatible. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 is compatible. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
.NET Framework | net452 is compatible. net46 was computed. net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on Leisn.MarkdigToc:
Repository | Stars |
---|---|
Librelancer/Librelancer
A re-implementation of Freelancer
|
Version | Downloads | Last updated |
---|---|---|
0.1.3 | 28,624 | 9/15/2021 |
v0.1.3:
1. Fix parse two markdown document use same `MarkdownPipelineBuilder` , one document without `[toc]` and the other one has, the generated toc block will contains both.
2. After fixed, markdown document can has more than one `[toc]` , and all of these can be rendered, though it's useless.