我正在使用 pandoc 1.16.0.2 转换 docx 文件,除了在每个图像之后,一切都很好,大小属性在 teh 中显示为文本
{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?
在命令行中用作-w gfm参数以省略图像的尺寸。
有两种方法可以做到这一点:要么使用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)
您可以编写一个过滤器来执行此操作。您需要安装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)
| 归档时间: |
|
| 查看次数: |
1100 次 |
| 最近记录: |