我如何 link 到 Scribble 中的第三方 Racket 文档?

How do I link to third party Racket docs in Scribble?

我正在尝试 link 涂写由第三方(而不是核心)库(具体来说,data/collection)提供的文档,但我无法让它工作.

使用这些导入:

@require[scribble/manual
         scribble-abbrevs/manual
         scribble/example
         racket/sandbox
         @for-label[(only-in racket
                             (foldl f:foldl)
                             (foldr f:foldr))
                    (only-in data/collection
                             (foldl d:foldl)]]

Racket 内置文档的以下 link 有效:

@racketlink[f:foldl "foldl"]

但是这个,到 data/collection 版本:

@racketlink[d:foldl "foldl"]

...导致以下错误:

raco setup: WARNING: undefined tag in <pkgs>/relation/scribblings/relation.scrbl:
raco setup:  (undef "--UNDEFINED:d:foldl--")
raco setup:  ((lib "data/collection.rkt") foldl)

我还尝试使用 @tech 标签,例如:

@tech[#:doc '(lib "scribblings/data/collection/collections.scrbl")]{"foldl"}

我尝试了它的几种变体,但无法让它工作——有一件事我在扫描文档时无法发现,例如 here,就是 lib link 有效——路径究竟指的是什么?显然,"scribblings" 不是指本地涂鸦文件夹,而是某种全局文档路径。但是如何知道特定图书馆的文档使用什么路径呢?对于上面提出的主要问题,这可能更像是一个次要问题,但是您可以在这里阐明的任何问题都会有所帮助。

问题是您只安装了 collections-lib。这不包括位于 collections-doc 的文档。

因此,要么安装软件包 collections-doc,要么安装(元)软件包 collections,后者将包括 collections-libcollections-doc。然后,运行 raco setup relation 重新呈现您的文档。这足以满足您自己的构建。

您可能还应该修改 info.rkt,以便安装您的包的​​其他人下载所需的依赖项。有几种方法可以进行设置。

  • 一个简单的方法是将 collections 放在 deps 中,这将要求用户安装元包 collections,因此同时安装 collections-libcollections-doc
  • 一个更难的方法是把collections-lib放在deps中(你已经这样做了)然后把collections-doc放在build-deps中。这种方法的一个优点是,如果用户将您的软件包安装为 binary package(已经预呈现文档),则用户无需下载构建文档所需的所有工具。