diff --git a/collects/scribble/base-render.ss b/collects/scribble/base-render.ss index e9d41647..d6bab27d 100644 --- a/collects/scribble/base-render.ss +++ b/collects/scribble/base-render.ss @@ -64,12 +64,15 @@ p)) (define/public (root-relative->path p) - (if (and (pair? p) - (mobile-root? (car p))) + (if (root-relative? p) (apply build-path (mobile-root-path (car p)) (map bytes->path-element (cdr p))) p)) + (define/public (root-relative? p) + (and (pair? p) + (mobile-root? (car p)))) + ;; ---------------------------------------- ;; marshal info diff --git a/collects/scribble/html-render.ss b/collects/scribble/html-render.ss index 060a7f22..cd2dd883 100644 --- a/collects/scribble/html-render.ss +++ b/collects/scribble/html-render.ss @@ -249,7 +249,8 @@ ;; ---------------------------------------- (inherit path->root-relative - root-relative->path) + root-relative->path + root-relative?) (define (path->relative p) (let ([p (path->main-doc-relative p)]) @@ -261,14 +262,16 @@ (intern-taglet p)))) (define (relative->path p) - (let ([p (main-doc-relative->path p)]) - (if (path? p) - p - (let ([p (main-collects-relative->path p)]) + (if (root-relative? p) + (root-relative->path p) + (let ([p (if (or (not (pair? p)) + (eq? (car p) 'doc)) + (main-doc-relative->path p) + p)]) (if (path? p) - p - (root-relative->path p)))))) - + p + (main-collects-relative->path p))))) + ;; ---------------------------------------- (define/override (start-collect ds fns ci)