AutoCore.MarkdigToc
0.1.3
dotnet add package AutoCore.MarkdigToc --version 0.1.3
NuGet\Install-Package AutoCore.MarkdigToc -Version 0.1.3
<PackageReference Include="AutoCore.MarkdigToc" Version="0.1.3" />
paket add AutoCore.MarkdigToc --version 0.1.3
#r "nuget: AutoCore.MarkdigToc, 0.1.3"
// Install AutoCore.MarkdigToc as a Cake Addin #addin nuget:?package=AutoCore.MarkdigToc&version=0.1.3 // Install AutoCore.MarkdigToc as a Cake Tool #tool nuget:?package=AutoCore.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
Thanks
Thanks Atrejoe for signed version
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. 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. |
-
net6.0
- Markdig (>= 0.26.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
0.1.3 | 139 | 6/20/2024 |
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.