MarkdigToc
MarkdigToc 是一个 Markdig 扩展组件,用于生成文档目录(Table of Content),通过解析文档中的[toc]
标记。
仅支持HTML渲染。
使用
使用默认设置:
csharpvar 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);
使用自定义设置:
csharpvar pipeline = new MarkdownPipelineBuilder().UseAdvancedExtensions() .UseTableOfContent( tocAction: opt=>{ // toc options }, idAction: opt=>{ // auto id options } ).Build(); // ...
设置选项
CustomAutoIdOptions
文件基于修改 AutoIdentifierExtension
, 添加了一些自定义的内容和附加选项。
注意:当使用
UseTableOfContent
时,如果存在AutoIdentifierExtension
,则替换为为 (CustomAutoIdExtension
),如果不存在则直接添加后者。
AutoIdentifierOptions
Options:Enum: default AutoIdentifierOptions.Default
从
AutoIdentifierExtension
继承的选项:- None
- AutoLink
- AllowOnlyAscii
- Default
- Github
GenerateHeadingId?
HeadingIdGenerator:Delegate: default null
委托,如果想参与生成标题Id,则实现它。
参数列表:
level:
int
当前标题的级别,一般指
#
号的个数,生成对应h1
到h6
.content:
string
当前标题的内容。
id:
string?
当前标题的
id
,如果在Markdown 文档中定义了,这里不为null
。比如在文档中 title-id for
# title {#title-id}
注意: 为了解析类似上面这种属性或者id ,需要使用
UseGenericAttributes
扩展, 而且必须在所有其他扩展之后。(所有其他 指 你想解析属性的那些扩展,在它之后的不解析属性)
TocOptions
特别的
IsUlOnlyContainLi
:bool: default true
根据 webhint ,
ul
和ol
的子节点只能时li
,script
和template
。设置 false 混合使用
ul
和li
(会生成少一点点的内容)。TitleAsConainerHeader
:bool: default false
把文档目录的标题放在
ContainerTag
中,而不是TocTag
。注意: 当然只有在
ContainerTag
非null
才有用。
TOC 容器
用于把生成的Toc 元素的内容放在一个单独的容器(如div
)中,看需要设置。
ContainerTag
:string? : default null
如果非null,生成的Toc 会放在
ContainerTag
中.ContainerId
:string? : default null
ContainerTag
的 id 属性。ContainerClass
:string? : default null
ContainerTag
的 class 属性。 比如"class1 class2"
TOC 元素
生成的 Toc 元素相关。
TocTag
:string : default nav
生成的Toc元素使用的标签名。比如
div
TocId
:string? : default null
TocTag
的 id 属性。TocClass
:string? : default null
TocTag
的 class 属性
TOC 标题
注意: 当前同样接受在文档中定义的Toc 标题和属性,正常的Markdown规则中并没有。
比如
[toc] TOC Title {#tocid.toc}
OverrideTitle
:string? : default null
覆盖标题,使用同一标题, 忽略在文档中定义的Toc标题。
TitleTag
:string : default p
Toc标题使用的元素标签。
TitleId
:string? : default null
TitleTag
的 id 属性。TitleClass
:string? : default null
TitleTag
的 class 属性。
TOC 项
ulClass
:string? : default p
ul
的 class 属性。liClass
:string? : default null
li
的 class 属性。aClass
:string? : default null
a
的 class 属性。
其他
Markdown 文档:
markdown[TOC] ##### t5 #### t4 ### t3 ## t2 # t1 ## t2 ### t3 #### t4 ##### t5
IsUlOnlyContainLi=true
:
txt● ○ ■ ■ ■ t5 ■ t4 ■ t3 ○ t2 ● t1 ○ t2 ■ t3 ■ t4 ■ t5
IsUlOnlyContainLi=false
:
txt■ t5 ■ t4 ■ t3 ○ t2 ● t1 ○ t2 ■ t3 ■ t4 ■ t5