HTML 标签在 Rmarkdown 到 word 文档
HTML tags in Rmarkdown to word document
是否可以在呈现为 word 的 Rmarkdown 文档中使用 HTML 标签?
例如:
---
output: word_document
---
# This is rendered as heading
<h1> But this is not </h1>
渲染为 html_document 时完美运行,但渲染为 word_document 时效果不佳。
这里提出了一个关于标签的更具体的问题,但没有解决方案:Underline in RMarkdown to Microsoft Word
好的,我们开始吧:
---
output:
word_document:
md_extensions: +raw_html-markdown_in_html_blocks
pandoc_args: ['--lua-filter', 'read_html.lua']
---
# This is rendered as heading
<h1> And this is one, too </h1>
其中 read_html.lua
必须是具有以下内容的同一目录中的文件:
function RawBlock (raw)
if raw.format:match 'html' and not FORMAT:match 'html' then
return pandoc.read(raw.text, raw.format).blocks
end
end
让我们解压上面的内容,看看它是如何工作的。您首先会注意到 word_document
的附加参数。 md_extensions
修改 pandoc 解析文本的方式,请参阅 here 以获取终端中的完整列表(或 运行 pandoc --list-extensions=markdown
)。我们启用 raw_html
以确保 pandoc 不会丢弃原始的 HTML 标签,并禁用 markdown_in_html_blocks
以确保我们将整个 HTML 标签作为 pandoc 内部的一个块格式。
下一个设置是pandoc_args
,我们告诉pandoc在转换期间使用Lua filter修改文档。过滤器挑选出所有 HTML 块,将它们解析为 HTML 而不是 Markdown,并将原始 HTML 替换为解析结果。
因此,如果您使用 pandoc 可以读取的原始 HTML,您会没事的。如果您使用的是 pandoc 无法读取的特殊说明,那么上述设置也无济于事。您必须重写 OOXML 中的标记,docx 中使用的 XML 格式。
是否可以在呈现为 word 的 Rmarkdown 文档中使用 HTML 标签?
例如:
---
output: word_document
---
# This is rendered as heading
<h1> But this is not </h1>
渲染为 html_document 时完美运行,但渲染为 word_document 时效果不佳。
这里提出了一个关于标签的更具体的问题,但没有解决方案:Underline in RMarkdown to Microsoft Word
好的,我们开始吧:
---
output:
word_document:
md_extensions: +raw_html-markdown_in_html_blocks
pandoc_args: ['--lua-filter', 'read_html.lua']
---
# This is rendered as heading
<h1> And this is one, too </h1>
其中 read_html.lua
必须是具有以下内容的同一目录中的文件:
function RawBlock (raw)
if raw.format:match 'html' and not FORMAT:match 'html' then
return pandoc.read(raw.text, raw.format).blocks
end
end
让我们解压上面的内容,看看它是如何工作的。您首先会注意到 word_document
的附加参数。 md_extensions
修改 pandoc 解析文本的方式,请参阅 here 以获取终端中的完整列表(或 运行 pandoc --list-extensions=markdown
)。我们启用 raw_html
以确保 pandoc 不会丢弃原始的 HTML 标签,并禁用 markdown_in_html_blocks
以确保我们将整个 HTML 标签作为 pandoc 内部的一个块格式。
下一个设置是pandoc_args
,我们告诉pandoc在转换期间使用Lua filter修改文档。过滤器挑选出所有 HTML 块,将它们解析为 HTML 而不是 Markdown,并将原始 HTML 替换为解析结果。
因此,如果您使用 pandoc 可以读取的原始 HTML,您会没事的。如果您使用的是 pandoc 无法读取的特殊说明,那么上述设置也无济于事。您必须重写 OOXML 中的标记,docx 中使用的 XML 格式。