首页 > 解决方案 > 如何在 Scribble 中链接到第三方 Racket 文档?

问题描述

我正在尝试链接到第三方(而不是核心)库(特别是data/collection)提供的 Scribble 文档,但我无法让它工作。

通过这些进口:

@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 内置文档有效:

@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"}

我尝试了几种变体,但无法让它工作——我在扫描文档时无法发现的一件事,例如这里,是lib链接的工作原理——路径到底指的是什么? 显然,“涂鸦”不是指本地涂鸦文件夹,而是某种全局文档路径。但是如何知道特定库的文档使用什么路径呢?对于上面提出的主要问题,这可能是次要问题,但是您可以在此处阐明的任何信息都会有所帮助。

标签: racketcode-documentationscribble

解决方案


问题是您只安装collections-lib. 这不包括其位于collections-doc.

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

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

  • 一个简单的方法是放入collectionsdeps这将要求用户安装 meta-package collections,因此同时安装collections-libcollections-doc
  • 一个更困难的方法是放入collections-libdeps你已经这样做了)并collections-doc放入build-deps. 这种方法的一个优点是,如果用户将您的包安装为二进制包(这将预先呈现文档),则无需下载构建文档所需的所有工具。

推荐阅读