将docx转换为markdown时如何避免markdown上的img大小标签?

wed*_*ard 5 pandoc

我正在使用 pandoc 1.16.0.2 转换 docx 文件,除了在每个图像之后,一切都很好,大小属性在 teh 中显示为文本

![](./media/media/image4.png){width="3.266949912510936in"
height="2.141852580927384in"}
Run Code Online (Sandbox Code Playgroud)

因此,它在 md 中显示了图像,但也将大小标签显示为每个图像后面/之后/下方的纯文本。我使用的命令是:

pandoc --extract-media ./media2 -s word.docx markdown -o exm_word2.md
Run Code Online (Sandbox Code Playgroud)

我已经尽我所能阅读了手册,但没有看到任何用于控制它的标志。此外,大多数搜索都出现在人们想要拥有属性并控制它们的地方。

有什么建议可以取消大小属性,还是我的降价应用程序(MarkdownPad2 - v-2.5.x)读错了这个 md?

Dan*_*con 5

在命令行中用作-w gfm参数以省略图像的尺寸。

  • 如果你有一些文档那就太好了。你正在做的,实际上是更改为 `--write=gfm` - `gfm (GitHub-Flavored Markdown),或者已弃用且不太准确的 markdown_github;仅当您需要 gfm 不支持的扩展时才使用 markdown_github。` Plus 不再工作,图像将转换为 `<img src="./images/media/image1.png" style="width:6.5in;height: 3.73611in" />` html 格式而不是 html (5认同)

tar*_*leb 5

有两种方法可以做到这一点:要么使用Lua 过滤器删除所有图像属性,要么选择不支持图像属性的输出格式。

输出格式

最简单(也是最符合标准)的方法是转换为commonmark. 然而,CommonMark允许原始 HTML 片段,因此 pandoc 尝试提供帮助并<img>为具有属性的图像创建 HTML 元素。我们可以通过禁用raw_html格式扩展来防止这种情况:

pandoc --to=commonmark-raw_html ...
Run Code Online (Sandbox Code Playgroud)

如果您打算在 GitHub 上发布文档,那么GitHub Flavored Markdown (gfm) 是一个不错的选择。

pandoc --to=gfm-raw_html ...
Run Code Online (Sandbox Code Playgroud)

对于 pandoc 的 Markdown,我们还必须禁用link_attributes扩展:

pandoc --to=markdown-raw_html-link_attributes ...
Run Code Online (Sandbox Code Playgroud)

最后一种方法是唯一适用于旧版(2.0 之前)pandoc 版本的方法;这里的所有其他建议都需要更新版本。

卢阿过滤器

该过滤器很简单,它只是从所有图像中删除所有属性

pandoc --to=commonmark-raw_html ...
Run Code Online (Sandbox Code Playgroud)

要应用过滤器,我们需要将上述内容保存到一个文件中no-img-attr.lua,并将该文件传递给 pandoc

pandoc --lua-filter=no-img-attr.lua ...
Run Code Online (Sandbox Code Playgroud)


sco*_*coa 4

您可以编写一个过滤器来执行此操作。您需要安装panfolute。将其另存为remove_img_size.py

import panflute as pf


def change_md_link(elem, doc):
    if isinstance(elem, pf.Image):
        elem.attributes.pop('width', None)
        elem.attributes.pop('height', None)
    return elem


if __name__ == "__main__":
    pf.run_filter(change_md_link)
Run Code Online (Sandbox Code Playgroud)

然后编译

pandoc word.docx -F remove_img_size.py -o exm_word2.md
Run Code Online (Sandbox Code Playgroud)