atian25 / yuque-exporter

export yuque to local markdown
MIT License
320 stars 36 forks source link

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

Open Judong0x0 opened 1 year ago

Judong0x0 commented 1 year ago

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

image
maxint commented 1 year ago

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

alephpiece commented 1 year ago

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

alephpiece commented 1 year ago

我遇到两个问题:表格内换行<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