4

scribble を使用してパッケージのドキュメントを生成しました。

そして raco は私の文書をラケット自身のドキュメントと統合し、ページの左上に検索ボックスを追加します。

それは「raco docs」を使えばわかります。

今、落書きをドキュメント ツールとして使用して、独立したドキュメントを生成したいと考えています。

しかし、scribble --htmls demo.scribble を使用すると、ページの左上に検索ボックスを配置できません。

ドキュメントに検索機能を持たせるために検索ボックスを追加する方法は?

4

1 に答える 1

2

これを行う方法はありますが、残念ながら、現時点ではあまり快適ではありません。より良いものにしたい場合は、これをどのように実現したいかについて、Issue を送信してください(野心がある場合はプル リクエストを送信してください)。(また、改善された場合は、誰かがこの回答を更新してください。)

scribble残念ながら、コマンド ライン アプリを使用して (または を使用して)、検索ボックス付きのフリーハンド ページをレンダリングすることはできませんraco scribble。むしろ、ドキュメントをレンダリングするにrenderは、scribble の機能を使用する必要があります。html-render-mixinただし、ドキュメントをレンダリングする独自のスクリプトを作成するという困難を乗り越えれば、それはかなり簡単です。

によって生成されたクラスhtml-render-mixinには (Racket 6.5 の時点ではドキュメント化されていません。Racket 6.6 のドキュメントを追加します) フィールド:search-box?があり、デフォルトは#fです。検索ボックスを #t に変更する以外は、html を拡張する独自のレンダラー mixin を作成できます。次のようにできます。

#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. (参考までに、落書きファイルは、コンパイル時にdoc、ドキュメントのコンテンツを含む という変数を定義します。)

また、がlanguage: でwebpage.scrbl書かれていることを確認してください。そうしないと、検索ボックスが表示されない場合があります。scribble/manual#lang scribble/manual

このファイルを実行webpage.htmlすると、検索ボックスが生成されます。入力してEnterキーを押すとsearch/index.html、同じフォルダーに移動し、検索クエリをhttpパラメーターとして渡します。私が知る限り、Racket は現在、内部検索インデックスを構築する方法をエクスポートしていませんがpkgs/racket-index/scribblings/main/search.scrbl、レポのソース コードでそれを行う方法を見つけることができます。その検索ページにスクリブルを付けたい場合は、github で問題を開いてください。

于 2016-06-14T22:03:50.373 に答える