markdown - Github Flavored Markdown 和 docx 的自定义样式属性
问题描述
在我的 github 风格的 markdown webkalk.md 文件中,我有一行:
<span custom-style="OS">something</span>
在 pandoc 的 reference.docx 中,我声明了一种样式“OS”。
当我使用命令生成我的 .docx 时:
pandoc -s webkalk.md > webkalk.docx -f markdown -t docx --reference-doc="reference.docx"
这个词something
的样式是我想要的(样式“OS”),但是当我尝试命令时:
pandoc -s webkalk.md > webkalk.docx -f gfm -t docx --reference-doc="reference.docx"
它的样式就像纯文本一样。
是否可以在 Github-Flavored Markdown 中为 docx 使用自定义样式?
解决方案
gfm
不包括对native_spans扩展的支持。Pandoc 的默认markdown
包括对 Pandoc 提供的大多数扩展的支持,包括native_spans
, 默认情况下。
但是,正如文档所解释的:
但是请注意,
commonmark
并且gfm
对扩展的支持有限。只有下面列出的那些(和smart
、、raw_tex
和hard_line_breaks
)才有效。但是,这些扩展都可以单独禁用。而且,raw_tex
只影响gfm
输出,不影响输入。
gfm
(GitHub 风格的 Markdown)pipe_tables, raw_html, fenced_code_blocks, auto_identifiers, gfm_auto_identifiers, backtick_code_blocks, autolink_bare_uris, space_in_atx_header, intraword_underscores, strikeout, task_lists, emoji, shortcut_reference_links, angle_brackets_escapable, lists_without_preceding_blankline.
作为解释,native_spans
和native_divs扩展解析原始 HTML 并将其转换为 Pandoc 的本机内部格式。如果输出格式包含支持,则允许将内容和任何相关属性传递给输出格式。但是,如果没有扩展,任何不直接支持 HTML 的输出格式都只会获得原始 HTML 的纯文本内容,这就是您所看到的行为。
commonmark
并且gfm
每个都有严格的规范定义,因此 Pandoc 似乎不允许与这些严格的规范有太大差异。因此,使用该格式时不支持native_spans
and扩展名。native_divs
gfm
文档对此提出警告:
因为 pandoc 对文档的中间表示比它在其之间转换的许多格式的表现力要差,所以人们不应该期望在每种格式和其他格式之间都能完美转换。...虽然从 pandoc 的 Markdown 到所有格式的转换都渴望完美,但从比 pandoc 的 Markdown 更具表现力的格式转换可以预期是有损的。
这里要记住的重要一点是“pandoc's Markdown”(markdown
格式)是唯一保证不会“有损”的格式。该gfm
格式不是“pandoc 的 Markdown”,因此不提供该保证。
也就是说,即使默认情况下未启用扩展,它似乎也native_spans
应该受 支持。gfm
然而,Commonmark 规范(GFM 扩展)完全重新设计了原始 HTML 的解析方式。据推测,Pandoc 需要重新定义解析原始 HTMLcommonmark
和gfm
格式的方法。因此,在原始 HTML 中工作的扩展无法与备用解析器方法一起使用。换句话说,任何在原始 HTML 上运行的扩展,包括native_spans
,都需要重写以使用commonmark
和gfm
格式。在此之前,这些扩展在使用这些格式时不可用。Pandoc 是否计划在未来增加支持不是我所知道的信息,也超出了本次讨论的范围。
推荐阅读
- git - 拉后如何正确删除合并提交?(处理分离的 HEAD)
- node.js - Webpack handlebars-loader 模板文件在 mocha 单元测试中无法解析
- angular - 是否可以覆盖@Component.providers 中的默认对话框选项?
- javascript - 经过文件值到个人
- javascript - 如何在两个不总是矩形的元素之间画一条线(路径,svg)
- php - jQuery Ajax 调用在服务器上出现内部服务器错误,但在 Localhost 上有效
- java - Hibernate 一对多关系
- java - 比较 Jsch Java 中上传和下载的文件
- php - 在 PHP 类路由器中添加 404 规则
- python - 保留满足条件的行和相邻行