现在,我想使用Scribble作为文档工具来生成我的独立文档。但是当我使用"Scribble --htmls demo.scribble"时,它不能在页面左上角有搜索框。
如何添加搜索框以使我的文档具有搜索功能?
有一种方法可以做到这一点,但遗憾的是,目前它并不特别方便。如果您想让我们改进它,请提交一个问题(或者如果您感到雄心勃勃,可以提交一个拉取请求),说明您希望如何实现这一点。(如果它得到改进,请有人更新这个答案。)
遗憾的是,您不能使用scribble
命令行应用程序(也不能使用raco scribble
)来呈现带有搜索框的scribble页面。相反,您需要使用scribble的render
函数,以及html-render-mixin
来呈现您的文档。一旦您克服了编写自己的脚本来呈现文档的障碍,这将变得非常简单。
html-render-mixin
生成的类有一个(截至Racket 6.5未记录,我将在Racket 6.6中添加文档)字段:search-box?
,默认为#f
。您可以构建自己的渲染器mixin,它扩展了html,除了将搜索框更改为#t。您可以这样做:
#lang racket
(require (prefix-in html: scribble/html-render))
(define (search:render-mixin %)
(class (html:render-mixin %)
(init [search-box? #t])
(super-new [search-box? search-box?])))
有了这个,你就可以直接通过在渲染函数中使用 render-mixin 关键字参数来传递它:
(require "webpage.scrbl")
(render (list doc)
(list "webpage.html")
#:render-mixin search:render-mixin)
这里,webpage.scrbl
是您的文件源,webpage.html
是您的目标位置。它们都是列表,因此您可以同时渲染多个文件。
doc
变量来自于 webpage.scrbl
。(参考资料:编译 scribble 文件时会定义一个名为 doc
的变量,其中包含文档内容。)
还要确保 webpage.scrbl
使用了 scribble/manual
语言:#lang scribble/manual
,否则您可能无法在其中获得搜索框。
运行此文件后,将生成带有搜索框的 webpage.html
。当您在其中键入内容并按下回车键时,它将进入同一文件夹中的 search/index.html
,并将您的搜索查询作为 http 参数传递。据我所知,Racket 目前不导出其构建内部搜索索引的方式,但您可以在 repo 的源代码中的 pkgs/racket-index/scribblings/main/search.scrbl
中找到它的实现方法。如果您希望 scribble 带有该搜索页面,请在 github 上开启一个问题。
#lang scribble/manual
? - soegaard#:style
:@title[#:style something]
。但是,这里的 something 需要填什么呢?如果您在这里得不到答案,我相信邮件列表会很有帮助。https://groups.google.com/forum/#!forum/racket-users - soegaard