@v1hz/md2docx 2.0.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +257 -98
- package/dist/index.js +147086 -467
- package/dist/index_bg.wasm +0 -0
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<h1 align="center">md2docx</h1>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
基于
|
|
8
|
+
基于 Pandoc 的 Markdown 转 Word 工具。在转换前规范文档结构、补充编号、渲染 Mermaid,并通过可定制的 Word 样式生成 DOCX。
|
|
9
9
|
</p>
|
|
10
10
|
|
|
11
11
|
<p align="center">
|
|
@@ -17,180 +17,339 @@
|
|
|
17
17
|
|
|
18
18
|
## 功能
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
| 功能 | 说明 |
|
|
21
|
+
| ----------------- | ------------------------------------------------------------------ |
|
|
22
|
+
| 文档标题 | 从 YAML frontmatter、H1 或文件名提取标题 |
|
|
23
|
+
| 标题层级归一化 | 将最浅标题归一化为 H1,并修复标题层级跳跃 |
|
|
24
|
+
| 标题编号 | 生成 `1`、`1.1`、`1.1.1` 等编号,并可剥离常见的已有中英文编号 |
|
|
25
|
+
| 表格与图片编号 | 自动生成“表 1”“图 1:标题”等题注 |
|
|
26
|
+
| Mermaid 图表 | 使用 beautiful-mermaid 和 resvg-wasm 将 Mermaid 渲染为高 DPI PNG |
|
|
27
|
+
| Word 样式 | 根据 JSON 样式生成 Pandoc reference DOCX,也可从现有 DOCX 提取样式 |
|
|
28
|
+
| Markdown 格式化 | 可只运行预处理流水线,输出格式化后的 Markdown |
|
|
29
|
+
| 集中缓存 | 中间文件统一存储到 `~/.md2docx/`,不会在当前目录创建 `tmp/` |
|
|
30
|
+
| Node 与可执行版本 | 支持 npm CLI,也支持构建不依赖 Node.js/Bun 的平台可执行文件 |
|
|
21
31
|
|
|
22
|
-
|
|
23
|
-
| ------------------ | ----------------------------------------------------------- |
|
|
24
|
-
| **文档标题** | 从 frontmatter、H1 或文件名自动提取 |
|
|
25
|
-
| **标题层级归一化** | 修正标题层级跳跃,确保从 H1 开始连续递增 |
|
|
26
|
-
| **标题编号** | 为标题添加多级编号(1、1.1、1.1.1 …),支持剥离已有编号 |
|
|
27
|
-
| **表格编号** | 自动为表格添加编号(表 1、表 2 …) |
|
|
28
|
-
| **图片编号** | 为独立图片添加编号(图 1、图 2 …) |
|
|
29
|
-
| **Mermaid 图表** | 将 Mermaid 代码块渲染为 PNG 图片 |
|
|
30
|
-
| **Word 导出** | 集成 pandoc,传入自定义样式模板,一键生成 .docx |
|
|
31
|
-
| **样式定制** | 通过 `config/style.json` 定义文档样式,支持从模板 docx 提取 |
|
|
32
|
-
| **web 配置编辑器** | 浏览器中可视化编辑配置 |
|
|
32
|
+
## 安装方式
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
### npm CLI
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
前置依赖:
|
|
37
|
+
|
|
38
|
+
- [Node.js 22.12+](https://nodejs.org/)
|
|
39
|
+
- [Pandoc](https://pandoc.org/installing.html),并确保 `pandoc` 可通过 `PATH` 调用
|
|
37
40
|
|
|
38
41
|
```bash
|
|
39
42
|
npm install -g @v1hz/md2docx
|
|
40
|
-
md2docx --
|
|
43
|
+
md2docx --version
|
|
44
|
+
md2docx report.md
|
|
41
45
|
```
|
|
42
46
|
|
|
43
|
-
|
|
47
|
+
也可以不全局安装:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npx @v1hz/md2docx report.md
|
|
51
|
+
```
|
|
44
52
|
|
|
45
53
|
## 快速开始
|
|
46
54
|
|
|
47
55
|
```bash
|
|
48
|
-
#
|
|
49
|
-
md2docx
|
|
56
|
+
# 只有输入路径时,可以省略 --file
|
|
57
|
+
md2docx report.md
|
|
58
|
+
|
|
59
|
+
# 使用任何转换选项时,输入必须通过 --file 指定
|
|
60
|
+
md2docx --file report.md --output output/report.docx --force
|
|
50
61
|
|
|
51
|
-
#
|
|
52
|
-
md2docx -f
|
|
62
|
+
# 使用自定义配置和样式
|
|
63
|
+
md2docx -f report.md -c config.json -s style.json
|
|
53
64
|
|
|
54
65
|
# 只执行 Markdown 预处理
|
|
55
|
-
md2docx format
|
|
66
|
+
md2docx format -f report.md
|
|
56
67
|
|
|
57
|
-
#
|
|
68
|
+
# 导出内置默认配置和样式
|
|
58
69
|
md2docx export config
|
|
59
70
|
md2docx export style
|
|
60
71
|
|
|
61
|
-
# 从现有
|
|
62
|
-
md2docx export style
|
|
72
|
+
# 从现有 DOCX 提取样式
|
|
73
|
+
md2docx export style -f template.docx
|
|
74
|
+
|
|
75
|
+
# 删除 ~/.md2docx 中的中间文件和缓存
|
|
76
|
+
md2docx clean
|
|
63
77
|
```
|
|
64
78
|
|
|
65
|
-
|
|
66
|
-
不传入任何参数时显示顶层帮助,行为与 `md2docx --help` 相同。
|
|
79
|
+
所有写文件命令默认拒绝覆盖已有文件。确认覆盖时显式传入 `--force`。
|
|
67
80
|
|
|
68
|
-
## CLI
|
|
81
|
+
## CLI 参考
|
|
69
82
|
|
|
70
|
-
```
|
|
71
|
-
md2docx
|
|
83
|
+
```shell
|
|
84
|
+
md2docx <markdown>
|
|
85
|
+
md2docx -f <markdown> [转换选项]
|
|
72
86
|
md2docx format -f <markdown> [选项]
|
|
73
87
|
md2docx export config [选项]
|
|
74
88
|
md2docx export style [选项]
|
|
89
|
+
md2docx clean
|
|
75
90
|
```
|
|
76
91
|
|
|
77
|
-
|
|
92
|
+
### 转换
|
|
78
93
|
|
|
79
|
-
| 参数 | 说明
|
|
80
|
-
| --------------------- |
|
|
81
|
-
|
|
|
82
|
-
| `-
|
|
83
|
-
| `-
|
|
84
|
-
| `-
|
|
85
|
-
|
|
|
86
|
-
|
|
|
87
|
-
| `-
|
|
94
|
+
| 参数 | 说明 |
|
|
95
|
+
| --------------------- | ---------------------------------------- |
|
|
96
|
+
| `<markdown>` | 位置参数;仅在没有其他转换选项时允许使用 |
|
|
97
|
+
| `-f, --file <path>` | Markdown 输入文件 |
|
|
98
|
+
| `-c, --config <path>` | 自定义配置 JSON |
|
|
99
|
+
| `-s, --style <path>` | 自定义样式 JSON |
|
|
100
|
+
| `-o, --output <path>` | DOCX 输出路径 |
|
|
101
|
+
| `--force` | 覆盖已有输出 |
|
|
102
|
+
| `-h, --help` | 显示帮助 |
|
|
103
|
+
| `-v, --version` | 显示版本号 |
|
|
88
104
|
|
|
89
|
-
|
|
90
|
-
`style.json`。从 DOCX 提取样式时,默认输出 `<DOCX 文件名>_style.json`。
|
|
105
|
+
位置参数不能和 `--file`、`--config`、`--style`、`--output` 或 `--force` 混用。例如:
|
|
91
106
|
|
|
92
|
-
|
|
107
|
+
```bash
|
|
108
|
+
md2docx report.md # 正确
|
|
109
|
+
md2docx report.md --force # 错误
|
|
110
|
+
md2docx -f report.md --force # 正确
|
|
111
|
+
```
|
|
93
112
|
|
|
94
|
-
|
|
95
|
-
`md2docx export config` 导出副本,修改后通过 `--config` 指定;CLI 不提供单个配置项覆盖。
|
|
96
|
-
|
|
97
|
-
| 配置项 | 说明 | 默认值 |
|
|
98
|
-
| -------------------------------- | ------------------------------------------------------------ | --------------------- |
|
|
99
|
-
| `detectTitle.enabled` | 自动设置文档标题 | `true` |
|
|
100
|
-
| `detectTitle.strategy` | 标题来源策略:`first-h1` / `single-h1` / `filename` / `none` | `"first-h1"` |
|
|
101
|
-
| `normalizeHeadings.enabled` | 自动修正标题层级 | `true` |
|
|
102
|
-
| `numberHeadings.enabled` | 自动为标题编号(开启时自动启用 normalizeHeadings) | `true` |
|
|
103
|
-
| `numberHeadings.detectExisting` | 重新编号前移除已有编号 | `true` |
|
|
104
|
-
| `numberHeadings.useBuiltinRules` | 识别常见的中文和数字编号 | `true` |
|
|
105
|
-
| `figureCaption.enabled` | 自动为图片编号(格式:`图 {n}`) | `true` |
|
|
106
|
-
| `figureCaption.format` | 图片编号格式 | `"图 {n}"` |
|
|
107
|
-
| `figureCaption.separator` | 编号与标题之间的分隔符 | `":"` |
|
|
108
|
-
| `tableCaption.enabled` | 自动为表格编号(格式:`表 {n}`) | `true` |
|
|
109
|
-
| `tableCaption.format` | 表格编号格式 | `"表 {n}"` |
|
|
110
|
-
| `tableCaption.separator` | 编号与标题之间的分隔符 | `" "` |
|
|
111
|
-
| `renderMermaid.enabled` | 渲染 Mermaid 图表为 PNG | `true` |
|
|
112
|
-
| `renderMermaid.theme` | 图表主题 | `"tokyo-night-light"` |
|
|
113
|
-
| `renderMermaid.density` | 图片清晰度(DPI,最小 72) | `200` |
|
|
113
|
+
### format
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
`format` 运行完整 Markdown 预处理,但不生成 DOCX,也不调用 Pandoc。
|
|
116
116
|
|
|
117
|
-
|
|
117
|
+
| 参数 | 说明 |
|
|
118
|
+
| --------------------- | ------------------------------------------- |
|
|
119
|
+
| `-f, --file <path>` | 必填,Markdown 输入文件 |
|
|
120
|
+
| `-c, --config <path>` | 自定义配置 JSON |
|
|
121
|
+
| `-o, --output <path>` | 输出 Markdown,默认 `<文件名>_formatted.md` |
|
|
122
|
+
| `--force` | 覆盖已有输出 |
|
|
118
123
|
|
|
119
|
-
###
|
|
124
|
+
### export
|
|
120
125
|
|
|
121
|
-
|
|
126
|
+
```bash
|
|
127
|
+
md2docx export config [-o config.json] [--force]
|
|
128
|
+
md2docx export style [-f template.docx] [-o style.json] [--force]
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
`export config` 导出内置默认配置。`export style` 不带 `--file` 时导出内置默认样式;指定 DOCX 时从该文档提取样式。
|
|
132
|
+
|
|
133
|
+
### clean
|
|
122
134
|
|
|
123
135
|
```bash
|
|
124
|
-
md2docx
|
|
136
|
+
md2docx clean
|
|
125
137
|
```
|
|
126
138
|
|
|
127
|
-
|
|
139
|
+
`clean` 只允许删除当前用户主目录下严格匹配的 `~/.md2docx/`。如果目标是符号链接,只删除链接本身。命令可重复执行;目录不存在时正常退出。
|
|
140
|
+
|
|
141
|
+
npm 卸载不会可靠地清理用户数据。卸载前如需清理,请显式运行:
|
|
128
142
|
|
|
129
|
-
|
|
143
|
+
```bash
|
|
144
|
+
md2docx clean
|
|
145
|
+
npm uninstall -g @v1hz/md2docx
|
|
146
|
+
```
|
|
130
147
|
|
|
131
|
-
|
|
148
|
+
## 默认输出
|
|
132
149
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
-
|
|
136
|
-
-
|
|
150
|
+
```text
|
|
151
|
+
md2docx report.md → ./report.docx
|
|
152
|
+
md2docx -f report.md → ./report.docx
|
|
153
|
+
md2docx format -f report.md → ./report_formatted.md
|
|
154
|
+
md2docx export config → ./config.json
|
|
155
|
+
md2docx export style → ./style.json
|
|
156
|
+
md2docx export style -f template.docx → ./template_style.json
|
|
157
|
+
```
|
|
137
158
|
|
|
138
|
-
|
|
159
|
+
## 中间文件与缓存
|
|
139
160
|
|
|
140
|
-
|
|
161
|
+
所有运行时资源统一位于:
|
|
141
162
|
|
|
142
|
-
|
|
163
|
+
```text
|
|
164
|
+
~/.md2docx/
|
|
165
|
+
├── preprocess/
|
|
166
|
+
│ └── <输入文件名>-<绝对路径哈希>/
|
|
167
|
+
│ ├── <输入文件名>_formatted.md
|
|
168
|
+
│ └── mermaid_*.png
|
|
169
|
+
├── resources/
|
|
170
|
+
│ ├── config.json
|
|
171
|
+
│ ├── style.json
|
|
172
|
+
│ └── add-inline-code.lua
|
|
173
|
+
└── style/
|
|
174
|
+
└── <样式内容哈希>.docx
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
输入文件的绝对路径参与目录哈希,因此不同目录下的同名 Markdown 不会复用中间文件。内置资源会在需要时写入 `resources/`;样式模板按样式内容哈希缓存。
|
|
178
|
+
|
|
179
|
+
输出 DOCX 和显式导出的配置、样式仍写到用户指定位置或当前工作目录,不会写入缓存目录。
|
|
180
|
+
|
|
181
|
+
## 配置
|
|
143
182
|
|
|
183
|
+
内置配置来自 `config/config.json`,并由 `config/config.schema.json` 提供 JSON Schema。推荐先导出再编辑:
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
md2docx export config
|
|
187
|
+
md2docx -f report.md -c config.json
|
|
144
188
|
```
|
|
189
|
+
|
|
190
|
+
CLI 不支持覆盖单个配置项,所有配置都通过 JSON 文件管理。
|
|
191
|
+
|
|
192
|
+
| 配置项 | 说明 | 默认值 |
|
|
193
|
+
| -------------------------------- | ---------------------------------------------- | --------------------- |
|
|
194
|
+
| `detectTitle.enabled` | 自动设置文档标题 | `true` |
|
|
195
|
+
| `detectTitle.strategy` | `first-h1` / `single-h1` / `filename` / `none` | `"first-h1"` |
|
|
196
|
+
| `normalizeHeadings.enabled` | 修正标题起始层级与层级跳跃 | `true` |
|
|
197
|
+
| `numberHeadings.enabled` | 为标题添加多级编号 | `true` |
|
|
198
|
+
| `numberHeadings.detectExisting` | 重新编号前移除已识别的编号 | `true` |
|
|
199
|
+
| `numberHeadings.useBuiltinRules` | 使用内置中文和数字编号识别规则 | `true` |
|
|
200
|
+
| `figureCaption.enabled` | 为独立图片添加题注 | `true` |
|
|
201
|
+
| `figureCaption.format` | 图片编号格式 | `"图 {n}"` |
|
|
202
|
+
| `figureCaption.separator` | 图片编号与标题之间的分隔符 | `":"` |
|
|
203
|
+
| `tableCaption.enabled` | 为表格添加题注 | `true` |
|
|
204
|
+
| `tableCaption.format` | 表格编号格式 | `"表 {n}"` |
|
|
205
|
+
| `tableCaption.separator` | 表格编号与标题之间的分隔符 | `" "` |
|
|
206
|
+
| `renderMermaid.enabled` | 将 Mermaid 渲染为 PNG | `true` |
|
|
207
|
+
| `renderMermaid.theme` | beautiful-mermaid 主题 | `"tokyo-night-light"` |
|
|
208
|
+
| `renderMermaid.density` | PNG 输出 DPI,最小值 72 | `200` |
|
|
209
|
+
|
|
210
|
+
## 样式定制
|
|
211
|
+
|
|
212
|
+
`config/style.json` 定义 DOCX 的默认样式、标题样式、段落样式和字符样式。转换时,项目用 `docx` 生成 reference DOCX,再通过 Pandoc 的 `--reference-doc` 应用样式。
|
|
213
|
+
|
|
214
|
+
### 从现有 DOCX 提取
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
md2docx export style -f template.docx
|
|
218
|
+
md2docx -f report.md -s template_style.json
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### 手动维护
|
|
222
|
+
|
|
223
|
+
主要区域包括:
|
|
224
|
+
|
|
225
|
+
- `default.document`:全局字体、字号与段落设置
|
|
226
|
+
- `default.heading1` 至 `default.heading6`:标题样式
|
|
227
|
+
- `default.title`:文档标题样式
|
|
228
|
+
- `paragraphStyles`:自定义段落样式
|
|
229
|
+
- `characterStyles`:自定义字符样式
|
|
230
|
+
- `tableStylesXml`:从 DOCX 提取并重新注入的表格样式 XML
|
|
231
|
+
|
|
232
|
+
基于 `a0`(Body Text)的样式会继承首行缩进。如果子样式不需要缩进,应在 `indent` 中显式清零。
|
|
233
|
+
|
|
234
|
+
## Mermaid 渲染
|
|
235
|
+
|
|
236
|
+
渲染流程如下:
|
|
237
|
+
|
|
238
|
+
```text
|
|
239
|
+
Mermaid
|
|
240
|
+
→ beautiful-mermaid
|
|
241
|
+
→ SVG
|
|
242
|
+
→ 内联 CSS var() / color-mix()
|
|
243
|
+
→ @resvg/resvg-wasm
|
|
244
|
+
→ 写入正确的 PNG DPI 元数据
|
|
245
|
+
→ PNG
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
resvg 不直接支持 beautiful-mermaid 输出中的所有 CSS 自定义属性,因此转换前会解析:
|
|
249
|
+
|
|
250
|
+
- `var(--name)`
|
|
251
|
+
- `var(--name, fallback)`
|
|
252
|
+
- 嵌套 fallback
|
|
253
|
+
- `color-mix(in srgb, ...)`
|
|
254
|
+
- 三位和六位十六进制颜色
|
|
255
|
+
|
|
256
|
+
Windows 会显式加载微软雅黑、Arial 和 Consolas;macOS 与 Linux 使用各自的候选系统字体。PNG 像素尺寸和 `pHYs` DPI 元数据都与 `renderMermaid.density` 保持一致。
|
|
257
|
+
|
|
258
|
+
运行时不依赖 Sharp。Sharp 只作为开发依赖,用于测试中比较 resvg 与旧渲染结果,不会打入 npm 运行时包或平台 EXE。
|
|
259
|
+
|
|
260
|
+
## 处理流水线
|
|
261
|
+
|
|
262
|
+
```text
|
|
145
263
|
Markdown
|
|
146
264
|
↓
|
|
147
265
|
解析 AST
|
|
148
266
|
↓
|
|
149
|
-
addTitle()
|
|
267
|
+
addTitle()
|
|
150
268
|
↓
|
|
151
|
-
normalizeHeadings()
|
|
269
|
+
normalizeHeadings()
|
|
152
270
|
↓
|
|
153
|
-
numberHeadings()
|
|
271
|
+
numberHeadings()
|
|
154
272
|
↓
|
|
155
|
-
numberTables()
|
|
273
|
+
numberTables()
|
|
156
274
|
↓
|
|
157
|
-
renderMermaid()
|
|
275
|
+
renderMermaid()
|
|
158
276
|
↓
|
|
159
|
-
numberPictures()
|
|
277
|
+
numberPictures()
|
|
160
278
|
↓
|
|
161
279
|
序列化 Markdown
|
|
162
280
|
↓
|
|
163
|
-
|
|
281
|
+
生成或复用 reference DOCX
|
|
282
|
+
↓
|
|
283
|
+
Pandoc + Lua filter
|
|
164
284
|
↓
|
|
165
|
-
|
|
285
|
+
DOCX
|
|
166
286
|
```
|
|
167
287
|
|
|
168
|
-
|
|
288
|
+
`numberTables()` 必须先于 Mermaid 渲染;`numberPictures()` 必须后于 Mermaid 渲染,这样 Mermaid 生成的图片也能获得图题。
|
|
169
289
|
|
|
170
|
-
|
|
290
|
+
## 构建
|
|
171
291
|
|
|
172
|
-
|
|
292
|
+
从源码开发需要 [Bun](https://bun.sh/)。
|
|
173
293
|
|
|
174
294
|
```bash
|
|
175
295
|
git clone https://github.com/WXY-V1hZ/md2docx.git
|
|
176
296
|
cd md2docx
|
|
177
297
|
bun install
|
|
178
|
-
|
|
298
|
+
|
|
299
|
+
# 从源码运行
|
|
300
|
+
bun run src/index.ts report.md
|
|
301
|
+
|
|
302
|
+
# 测试和静态检查
|
|
303
|
+
bun test
|
|
304
|
+
bun check
|
|
179
305
|
```
|
|
180
306
|
|
|
181
|
-
###
|
|
307
|
+
### npm 构建
|
|
182
308
|
|
|
183
309
|
```bash
|
|
184
|
-
|
|
185
|
-
|
|
310
|
+
bun run build
|
|
311
|
+
```
|
|
186
312
|
|
|
187
|
-
|
|
188
|
-
bun check
|
|
313
|
+
输出:
|
|
189
314
|
|
|
190
|
-
|
|
191
|
-
|
|
315
|
+
```text
|
|
316
|
+
dist/
|
|
317
|
+
├── index.js
|
|
318
|
+
└── index_bg.wasm
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
依赖会打包进 `index.js`,resvg WASM 作为相邻资源输出。`prepack` 会自动执行此构建。
|
|
322
|
+
|
|
323
|
+
### 平台可执行文件
|
|
324
|
+
|
|
325
|
+
```bash
|
|
326
|
+
bun run build:exe
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
Windows 输出为 `dist/md2docx.exe`。该程序只适用于构建目标对应的操作系统和 CPU 架构。
|
|
330
|
+
|
|
331
|
+
`build` 和 `build:exe` 都会先删除整个 `dist/`,因此两种产物不会同时保留。尤其不要依赖手工生成的 EXE 参与 `npm publish`:发布时 `prepack` 会重新生成 npm 所需的 `index.js` 和 WASM。
|
|
332
|
+
|
|
333
|
+
## 常见问题
|
|
334
|
+
|
|
335
|
+
### 找不到 Pandoc
|
|
336
|
+
|
|
337
|
+
先检查:
|
|
338
|
+
|
|
339
|
+
```bash
|
|
340
|
+
pandoc --version
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
如果命令不存在,请从 [Pandoc 官方安装页](https://pandoc.org/installing.html) 安装,并重新打开终端使 `PATH` 生效。
|
|
344
|
+
|
|
345
|
+
### 输出文件已存在
|
|
346
|
+
|
|
347
|
+
默认不会覆盖文件。确认目标可以覆盖后使用:
|
|
348
|
+
|
|
349
|
+
```bash
|
|
350
|
+
md2docx -f report.md --force
|
|
192
351
|
```
|
|
193
352
|
|
|
194
353
|
## 许可
|
|
195
354
|
|
|
196
|
-
|
|
355
|
+
md2docx 以 [GNU GPL v3.0](LICENSE) 发布。
|