sig
  type t
  val text : Syntax.t -> Markdown.text
  val publish :
    page:Doc.page ->
    name:string ->
    descr:Markdown.text ->
    synopsis:Syntax.t -> ?details:Markdown.elements -> unit -> Syntax.t
  val unit : Syntax.t
  val any : Syntax.t
  val int : Syntax.t
  val ident : Syntax.t
  val string : Syntax.t
  val number : Syntax.t
  val boolean : Syntax.t
  val tag : string -> Syntax.t
  val array : Syntax.t -> Syntax.t
  val tuple : Syntax.t list -> Syntax.t
  val union : Syntax.t list -> Syntax.t
  val option : Syntax.t -> Syntax.t
  val record : (string * Syntax.t) list -> Syntax.t
  type field = { name : string; syntax : Syntax.t; descr : Markdown.text; }
  val fields : title:string -> Syntax.field list -> Markdown.element
end