diff --git a/kernel/model/export.go b/kernel/model/export.go index 863f26426..b17c6b3de 100644 --- a/kernel/model/export.go +++ b/kernel/model/export.go @@ -1525,6 +1525,25 @@ func exportMarkdownContent0(tree *parse.Tree, cloudAssetsBase string, assetsDest }) } + // When exporting Markdown, `
` nodes in non-tables are replaced with `\n` text nodes https://github.com/siyuan-note/siyuan/issues/9509 + var unlinks []*ast.Node + ast.Walk(tree.Root, func(n *ast.Node, entering bool) ast.WalkStatus { + if !entering { + return ast.WalkContinue + } + + if ast.NodeBr == n.Type { + if !n.ParentIs(ast.NodeTableCell) { + n.InsertBefore(&ast.Node{Type: ast.NodeText, Tokens: []byte("\n")}) + unlinks = append(unlinks, n) + } + } + return ast.WalkContinue + }) + for _, unlink := range unlinks { + unlink.Unlink() + } + renderer := render.NewProtyleExportMdRenderer(tree, luteEngine.RenderOptions) ret = gulu.Str.FromBytes(renderer.Render()) return