Flutter Markdown目录生成插件markdown_toc的使用
Flutter Markdown目录生成插件markdown_toc的使用
目录
1. 概述
这个工具用于为Markdown文件添加标题编号和目录。
它用于使长Markdown文件更易于导航和阅读。
例如,它将一个包含以下内容的Markdown文件:
文档标题
Alpha
Foo
Bar
Beta
Gamma
转换为:
# 文档标题
## 目录
1. Alpha
- 1.1 Foo
- 1.2 Bar
2. Beta
3. Gamma
## 1. Alpha
### 1.1 Foo
### 1.2 Bar
## 2. Beta
## 3. Gamma
注意:此README已通过该工具处理,以自动生成上述目录和编号标题。嵌入的Markdown示例开始于行首的额外“|”,以防止该工具将其识别为需要处理的标题。
这是一个简化示例:实际输出还包含目录条目到它们所引用部分的超链接。
该工具还可以更新编号和目录。它可以重新运行自己的输出,这对于添加、更改或删除标题非常有用。
它还可以用于删除目录和标题编号。即,将其恢复到原始输入的Markdown状态。
2. 使用
2.1. 概要
Usage: markdown_toc [options] {markdown-files}
Options:
-t | --top-level N 最低编号标题级别(默认:2)
-n | --num-level N 最高编号标题级别(默认:5)
-i | --toc-level N 最高包括在目录中的标题级别(默认:4)
-o | --output FILE 将结果写入指定输出文件(默认:stdout)
-r | --replace 替换输入文件而不是输出到文件
-s | --strip 移除目录和编号,而不是添加/更新它们
-v | --verbose 运行时输出更多信息
--version 显示版本信息并退出
-h | --help 显示帮助信息并退出
2.2. 输出生成
默认情况下,结果会写入标准输出:
$ markdown_toc.dart example.md
但通常会用该工具替换输入文件以获得结果:
$ markdown_toc.dart --replace example.md
或者,可以指定不同的输出文件:
$ markdown_toc.dart --output example-with-toc.md example.md
2.3. 标题语法
该工具仅处理使用“#”前缀的Markdown标题。忽略使用下划线的标题。
2.4. 目录
目录插入在第一个识别的标题之前。
2.5. 标题级别
2.5.1. 默认处理2级及以上标题
如果它处理2级标题及更高(默认设置),这允许文档的标题使用下划线语法格式化。它会忽略标题(即不编号也不包括在目录中),并在第一个非忽略标题之前插入目录。
默认最高编号级别为5。6级及以上的标题(即那些以Markdown “######” 开始的)不会被编号。
最高包括在目录中的标题级别为4。5级及以上的标题(即那些以Markdown “#####” 开始的)不会被包括在目录中(即使它们被编号)。
例如,
标题
======
第一节
子节
第二节
将生成:
# 标题
======
## 目录
...
## 1. 第一节
### 1.1 子节
## 2. 第二节
2.5.2. 更改处理的标题级别
通过 --top-level
、--num-level
和 --toc-level
选项更改处理的标题级别。
例如,一些Markdown文件使用元数据块作为文档标题,1级标题作为普通标题使用。
% 文档的标题 % 作者 % 版本 1.0.0
第一节
子节
第二节
使用 `--top-level` 选项来包含1级标题:
```shell
$ markdown_toc --top-level 1 example.md
生成:
% 文档的标题 % 作者 % 版本 1.0.0
目录
…
1. 第一节
1.1 子节
2. 第二节
### 2.6. 删除目录和编号
使用 `--strip` 选项移除由该工具添加的信息。
```shell
$ markdown_toc.dart --strip example-with-toc.md
3. 安装
markdown_toc
不应作为依赖项使用。相反,应该安装。
有许多方法可以安装。
3.1. Dart
当用于管理Dart项目中的Markdown文件时,可以将此工具作为项目的开发依赖项。
3.1.1. Dart项目的依赖
该工具旨在作为Dart项目的开发依赖项,以便可以在项目中使用它为长Markdown文档添加编号标题和目录。
在 pubspec.yaml
中添加:
dev_dependencies:
markdown_toc: ^1.1.0
然后运行:
$ dart pub get
工具应使用 dart run
命令运行,以运行通过 dart pub get
安装的具体版本的工具。
$ dart run markdown_toc --help
3.1.2. 全局安装
或者,使用 dart pub global activate
安装,以便可以在任何Markdown文件上使用(不仅仅是用于记录Dart项目的Markdown文件)。
$ dart pub global activate markdown_toc
如果全局目录在PATH中,可以通过以下方式运行工具:
$ markdown_toc --help
或者,总是可以通过以下方式运行:
$ dart pub global run markdown_toc --help
3.1.3. 脚本在任何有Dart的地方运行
最后,该工具已编写为不使用任何pub包。因此,只要 dart
可执行文件可用,就可以在任何地方运行。无需在Dart项目内部,也无需有相关的 pubspec.yaml
文件。
将 markdown_toc.dart
文件复制到PATH上的某个位置:
$ cp markdown_toc.dart /usr/local/bin/markdown_toc
然后像正常命令一样运行它:
$ markdown_toc --help
3.1.4. 编译的可执行文件无需Dart即可运行
编译成自包含的可执行文件。可以在任何地方运行,而无需Dart可执行文件。
$ dart compile exe bin/markdown_toc.dart
$ bin/markdown_toc --help
3.2. 二进制文件
二进制文件可以从项目的GitHub releases 下载。
将其复制到你的PATH中的某个位置。
4. 限制
4.1. 可能错误地将围栏代码块视为标题
围栏代码块内的行(即在以
更多关于Flutter Markdown目录生成插件markdown_toc的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter Markdown目录生成插件markdown_toc的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
markdown_toc
是一个 Flutter 插件,用于在 Markdown 文档中生成目录。它可以帮助你快速生成并管理 Markdown 文档的目录结构。以下是使用 markdown_toc
插件的详细步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 markdown_toc
依赖:
dependencies:
flutter:
sdk: flutter
markdown_toc: ^1.0.0
然后运行 flutter pub get
来获取依赖。
2. 导入包
在你的 Dart 文件中导入 markdown_toc
包:
import 'package:markdown_toc/markdown_toc.dart';
3. 使用 markdown_toc
生成目录
你可以使用 markdown_toc
来生成 Markdown 文档的目录。以下是一个简单的示例:
void main() {
String markdownContent = '''
# Title 1
## Subtitle 1.1
### Subtitle 1.1.1
## Subtitle 1.2
# Title 2
## Subtitle 2.1
''';
Toc toc = Toc();
String tocContent = toc.addToc(markdownContent);
print('Generated TOC:\n$tocContent');
}
4. 输出
运行上述代码后,tocContent
将包含生成的目录,输出如下:
### 5. 插入目录到 Markdown 文档
你可以将生成的目录插入到 Markdown 文档中:
```dart
String finalMarkdown = '''
# Table of Contents
$tocContent
$markdownContent
''';
print('Final Markdown:\n$finalMarkdown');
6. 高级配置
markdown_toc
支持一些高级配置,例如自定义目录的深度、是否包含标题等。你可以通过 TocOptions
进行配置:
TocOptions options = TocOptions(
heading: '## Table of Contents', // 自定义目录标题
depth: 2, // 只生成到二级标题
);
Toc toc = Toc(options: options);
String tocContent = toc.addToc(markdownContent);
print('Custom TOC:\n$tocContent');