atian25/yuque-exporter

导出语雀的表格格式出现错误

Judong0x0 opened this issue · 3 comments

在导出与语雀的表格格式为markdown后出现错误,表格全乱了。。。。
image

简单的表格可以处理好,但复杂的表格会出问题,感觉 Markdown 的表格支持比较弱,不大好实现转换功能。

我遇到两个问题:表格内换行<br/>被替换成了\n,表格内空白格被替换成了 unicode &#x20;

我遇到两个问题:表格内换行<br/>被替换成了\n,表格内空白格被替换成了 unicode &#x20;

找到一个方法,用mdast-util-gfm-table来解析表格,并且不要用yuque-exporter原本的remark插件来替换表格中的<br/>,这样就能保持表格格式。

micromark-extension-gfm-tablemdast-util-gfm-table提供了 GFM 表格的语法支持,增加了table节点。于是可以自己遍历整个 Markdown 语法树,跳过所有table节点,大概像这样:

const tree = fromMarkdown(mdstring, {
    extensions: [gfmTable],
    mdastExtensions: [gfmTableFromMarkdown]
});

visit(tree, visitor);

function visitor(node, parent) {
    if (node.type === 'table')
        return SKIP;
    // 还可以在这里处理其他类型节点。
}

const newstring = toMarkdown(tree, {extensions: [gfmTableToMarkdown()]});

我改了一下原来的代码给自己用,可以参考:https://github.com/alephpiece/yuque-exporter