From 3b914cc9d38445edd138160741dec1d84957cd94 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Sat, 11 Oct 2025 18:08:35 +0800 Subject: [PATCH 1/2] :art: Improve exporting markdown block ref relative path https://github.com/siyuan-note/siyuan/issues/16042 Signed-off-by: Daniel <845765@qq.com> --- kernel/model/export.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/kernel/model/export.go b/kernel/model/export.go index 6fa0c2a0d..3240a2560 100644 --- a/kernel/model/export.go +++ b/kernel/model/export.go @@ -2162,11 +2162,19 @@ func exportMarkdownContent0(id string, tree *parse.Tree, cloudAssetsBase string, href = "#" + defID } } - newHref := strings.TrimPrefix(href, currentDocDir) - if !strings.HasPrefix(newHref, ".md") { - href = newHref - } + + sameDir := path.Dir(href) == currentDocDir href = util.FilterFilePath(href) + if !sameDir { + var relErr error + href, relErr = filepath.Rel(currentDocDir, href) + if nil != relErr { + logging.LogWarnf("get relative path from [%s] to [%s] failed: %s", currentDocDir, href, relErr) + } + href = filepath.ToSlash(href) + } else { + href = strings.TrimPrefix(href, currentDocDir+"/") + } blockRefLink := &ast.Node{Type: ast.NodeTextMark, TextMarkType: "a", TextMarkTextContent: linkText, TextMarkAHref: href} blockRefLink.KramdownIAL = n.KramdownIAL n.InsertBefore(blockRefLink) From f87f22c2b83c6dbab3d529665f06489d8855cc65 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Sat, 11 Oct 2025 18:10:12 +0800 Subject: [PATCH 2/2] :art: Improve exporting markdown block ref relative path https://github.com/siyuan-note/siyuan/issues/16042 Signed-off-by: Daniel <845765@qq.com> --- kernel/model/export.go | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/model/export.go b/kernel/model/export.go index 3240a2560..18d7c1110 100644 --- a/kernel/model/export.go +++ b/kernel/model/export.go @@ -2109,6 +2109,7 @@ func exportMarkdownContent0(id string, tree *parse.Tree, cloudAssetsBase string, } currentDocDir := path.Dir(tree.HPath) + currentDocDir = util.FilterFilePath(currentDocDir) var unlinks []*ast.Node ast.Walk(tree.Root, func(n *ast.Node, entering bool) ast.WalkStatus {