2016-05-15 17 views
4

我用塗鴉來生成我的包的文件。Racket Scribble,如何添加一個搜索框?

raco將我的douments與球拍自己的文檔 合併在一起,並在頁面的頂部添加一個搜索框。

你可以看到,當你使用「raco文檔」。

現在我想用塗鴉作爲文檔工具來生成我的獨立文檔 。

但是當我使用塗鴉--htmls demo.scribble時,它不能在頁面的頂部有一個搜索框 。

如何添加搜索框讓我的文檔具有搜索功能?

+0

你使用'#lang scribble/manual'嗎? – soegaard

+0

是的,使用手冊 – simmone

+1

我無法在文檔中找到詳細信息。我相信你需要使用'#:style'標題:'@title [#:style something]'。但是什麼東西需要成爲?如果你在這裏沒有得到答案,我相信郵件列表會有幫助。 https://groups.google.com/forum/#!forum/racket-users – soegaard

回答

1

有一種方法可以做到這一點,但可悲的是,它目前並不特別令人愉快。如果您希望我們做得更好,請提交一份issue(或者如果您感覺雄心勃勃,我想請您提出要求),以瞭解您希望如何做到這一點。 (如果確實有所改進,請更新此答案。)

不幸的是,您無法使用scribble命令行應用程序(也不使用raco scribble)在搜索框中呈現塗鴉頁。相反,您需要使用雜文的render函數,並使用html-render-mixin來呈現文檔。一旦你完成了編寫自己的腳本來渲染文檔的過程,這很簡單。

通過html-render-mixin產生的類有一個(無證作爲球拍6.5的,我會添加文檔球拍6.6)字段:search-box?,默認爲#f。除了將搜索框更改爲#t外,您可以構建擴展html的渲染器混合。你能做到這一點,像這樣:

#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?]))) 

從那裏,你可以傳遞到渲染功能,這個直接與渲染混入關鍵字參數:

(require "webpage.scrbl") 

(render (list doc) 
     (list "webpage.html") 
     #:render-mixin search:render-mixin) 

這裏,webpage.scrbl是爲您的文件源和webpage.html是你的目標地點。它們是列表,因此您可以同時呈現多個文件。

該變量來自webpage.scrbl。 (僅供參考,塗鴉文件,編譯時,定義一個名爲doc變量,它包含了文檔的內容。)

同時,確保webpage.scrbl是寫在scribble/manual語言:#lang scribble/manual,否則你可能不會得到一個搜索框在那裏。

當您運行此文件時,將使用搜索框生成webpage.html。當你輸入並輸入時,它會在同一個文件夾中輸入search/index.html,並將你的搜索查詢作爲http參數傳入。據我所知,Racket目前不會導出它如何構建內部搜索索引,但您可以在回購的源代碼中找到它是如何實現的:pkgs/racket-index/scribblings/main/search.scrbl。如果您希望該搜索頁面隨意塗鴉,請在github上打開一個問題。

+0

非常感謝。 – simmone