我发现这里面全是坑…
我主要用的 python 版的, 最终目标是想要成功执行下面这句:
pandoc "test_mermaid_导出word.md" -o test_mermaid_导出word.docx --filter pandoc-mermaid --verbose
过程中遇到的问题有
- pandoc_mermaid_filter.py 要求系统里有 环境变量
MERMAID_BIN
见 os.environ.get('MERMAID_BIN', 'mermaid')
ref
一般这种情况, 可以不设变量用它默认 'mermaid'
就完了呗? 但我发现在我这里 mermaid 主程序叫 mmdc (见 “2.”), 最后还是得在 Windows 里把这环境变量手动加上
2. 系统里需要 mermaid cli cnpm install -g @mermaid-js/mermaid-cli
而前者依赖 cnpm install -g puppeteer
总之我都安装了一通
想 pandoc 导出成功, 至少得先做到 cmd 里能成功运行 mmdc --help
3. pandoc_mermaid_filter.py 开子进程可能报错
我这里不是必现, 但好几次都挂在下面这里
File "...... \site-packages\pandoc_mermaid_filter.py", line 34, in mermaid
subprocess.check_call([MERMAID_BIN, "-i", src, "-o", dest])
# 再往下是 subprocess 的 traceback 这里不太可能出错
File "...... \anaconda3\Lib\subprocess.py", line 1538, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError
实际这句 subprocess.check_call([MERMAID_BIN, "-i", src, "-o", dest])
ref 干的事就是拼个命令行, 把 mermaid 语法 *.mmd
给转个图片出来
我是先给改成了 os.system(' '.join([MERMAID_BIN, "-i", src, "-o", dest]))
让它先跑起来再说
折腾完这一堆后, 终于能把含 mermaid 语法的 md 转 docx 了, 它会先造个 mermaid-images
子目录, 把 mermaid 代码都转图片缓存着, 最后统一给搁在 docx 里
要不先去把mermaid导出照片插进来?
图片数量少且急用的话, 我也觉得别折腾了…
等有时间再慢慢研究