knitr,pandoc:直接将SVG嵌入到HTML文档中

时间:2014-05-15 13:56:24

标签: r svg knitr pandoc

我正在使用 knitr 自动生成报告到mediawiki页面。报告输出通过 pandoc 以HTML格式显示。但我在将数据上传到维基站点时遇到问题。所以我想我会使用SVG设备并将代码包含在最终文档中,而不是依赖于外部文档。但是我无法使用knitr或pandoc来做这件事。有没有人知道创建嵌入式SVG而不是链接到图像的pandoc或knitr选项?甚至是一个小的shell脚本,用<img src="myFigure.svg">的内容替换myFigure.svg

1 个答案:

答案 0 :(得分:0)

我最终使用一个简单的python脚本来完成工作

from sys import argv
import re
import os

def svgreplace(match):
    "replace match with the content of a filename match"
    filename = match.group(1)
    with open(filename) as f:
        return f.read()

def svgfy(string):
    img = re.compile(r'<img src="([^"]*\.svg)"[^>]*>')
    return img.sub(svgreplace, string)

if __name__ == "__main__":
    fname = argv[1]
    with open(fname) as f:
        html = f.read()
        out_fname = fname + ".tmp"
        out = open(out_fname, 'w')
        out.write(svgfy(html))
        out.close()
        os.rename(out_fname, fname)