mmarkdown/mmark

GitHub: mmarkdown/mmark

Mmark 是一个用 Go 编写的 Markdown 处理器,专为生成 IETF 标准文档(RFC 7991 XML、HTML5)而设计,也适用于编写书籍和技术文档。

Stars: 513 | Forks: 48

## title: "关于" date: 2018-07-22T14:05:51+01:00 aliases: [/about/] Mmark 是一个用 Go 编写的强大的 Markdown 处理器,专为编写 IETF 文档而设计。然而,它 *也* 适合编写完整的书籍和其他技术文档,例如 [Learning Go 一书](https://miek.nl/go)([mmark 源码](https://github.com/miekg/learninggo),以及 [I-D 文本输出](https://miek.nl/go/learninggo-2.txt))。 另请参阅[此仓库](https://github.com/danyork/writing-internet-drafts-in-markdown),了解如何 使用 Markdown 编写 RFC。 它提供了一种高级的 Markdown 方言,可处理文件以生成 XML [RFC 7991](https://tools.ietf.org/html/rfc7991) 格式的 internet-draft。Mmark 可以生成 xml2rfc(前述 RFC 7991)、HTML5 输出和 manual pages。 Mmark 格式的 RFC 示例可以[在 Github 仓库中找到](https://github.com/mmarkdown/mmark/tree/master/rfc)。 Mmark 使用了 [gomarkdown](https://github.com/gomarkdown/markdown),它是 [blackfriday](https://github.com/russross/blackfriday/) 的一个分支。有关更多文档,请参阅其 [README.md](https://github.com/gomarkdown/markdown/blob/master/README.md)。 ## 语法 Mmark 的语法以及相较于纯 Markdown 的新增功能在 [syntax.md](https://mmark.miek.nl/syntax) 中有详细说明。 Mmark 向 [gomarkdown/markdown](https://github.com/gomarkdown/markdown/blob/master/README.md) 添加了以下语法元素: * (扩展的)[标题块](https://mmark.miek.nl/post/syntax/#title-block)。 * [特殊章节](https://mmark.miek.nl/post/syntax/#special-sections)。 * [包含其他文件](https://mmark.miek.nl/post/syntax/#including-files),可以选择指定行范围、正则 表达式和/或为每行添加字符串前缀。默认情况下,只允许包含同一级别或 更低级别的文件(参见 `-unsafe` 标志)。 * [文档分区](https://mmark.miek.nl/post/syntax/#document-divisions)。 * 代码、表格和引语的[标题](https://mmark.miek.nl/post/syntax/#captions) * [旁注](https://mmark.miek.nl/post/syntax/#asides)。 * [图形与子图形](https://mmark.miek.nl/post/syntax/#figures-and-subfigures) - 将(子)图形打包 成更大的图形。 * [块级属性](https://mmark.miek.nl/post/syntax/#block-level-attributes),允许为元素指定属性、类和 ID。 * [索引](https://mmark.miek.nl/post/syntax/#indices),用于标记要在文档索引中引用的项目(和/或子项目)。 * [引文](https://mmark.miek.nl/post/syntax/#citations)以及添加 [XML References](https://mmark.miek.nl/post/syntax/#xml-references) * [文档内交叉引用](https://mmark.miek.nl/post/syntax/#cross-references),引用文档中章节的 简写形式。 * [上标和下标](https://mmark.miek.nl/post/syntax/#super-and-subscript)。 * 代码和文本中的[标注](https://mmark.miek.nl/post/syntax/#callouts)。 * [BCP14](https://mmark.miek.nl/post/syntax/#bcp14) (RFC 2119) 关键字检测。 ## 用法 您可以[下载二进制文件](https://github.com/mmarkdown/mmark/releases),或者选择自行 构建 mmark。您需要一个可用的 [Go 环境](https://golang.org),然后检出代码并执行: ``` % go get && go build % ./mmark -version 2.0.0 ``` 要输出 XML2RFC v3 xml,只需提供一个 Markdown 文件并执行: ``` % ./mmark rfc/3514.md ``` 以文本形式生成草稿(v3 输出) ``` % ./mmark rfc/3514.md > x.xml % xml2rfc --v3 --text x.xml ``` 输出 HTML5 是通过 `-html` 开关完成的。 在 Windows/Mac 下编辑并使用 Windows 样式的文件,在解析前将被转换为 Unix 样式的换行符。 来自 `mmark` 的任何输出都将使用 Unix 换行符。 请注意,没有*错误*的 Markdown 文档,因此 `mmark` 只会对不 正确的内容发出警告。这可能会导致生成的 XML 无效。来自 `mmark` 的任何警告都会发送到标准错误流,要查看 并检查这些警告,您可以丢弃标准输出,只留下标准错误:`./mmark rfc/3515.md > /dev/null`。 ### Docker 每次发布时都会自动构建一个容器镜像,并可在 GitHub Container Registry 中获取。 该镜像的使用方式如下例所示: ``` docker run --rm `# automatically remove container upon termination` \ -v "$(pwd):/data" `# bind current working directory to /data` \ ghcr.io/mmarkdown/mmark:latest `# container name` \ example.md > example.xml # example.md input filename, pipe output to example.xml # 单行 docker run --rm -v $(pwd):/data ghcr.io/mmarkdown/mmark:latest example.md > example.xml ``` ## RFC 示例 rfc/ 目录包含几个可以通过 v3 工具链构建的 RFC 示例。 要构建文本文件,只需运行: ``` cd rfc make txt ``` 官方 RFC 位于 rfc/orig 中(这样您就可以将 mmark 的文本输出与之进行比较)。 ## 另请参阅 [Kramdown-rfc2629](https://github.com/cabo/kramdown-rfc2629) 是另一个用于处理 Markdown 并 输出 XML2RFC XML 的工具。 请参阅 Syntax.md,了解有关如何使用 Markdown 语法创建 IETF 文档的入门指南。
标签:EVTX分析, 日志审计, 请求拦截