@children_order odoc_for_authors cheatsheet dune features extensions ocamldoc_differences interface driver json deprecated/ main_index odoc.document/ odoc.examples/ odoc.extension_api/ odoc.extension_registry/ odoc.html/ odoc.html_support_files/ odoc.index/ odoc.json_index/ odoc.latex/ odoc.loader/ odoc.manpage/ odoc.markdown/ odoc.model/ odoc.model_desc/ odoc.ocamlary/ odoc.occurrences/ odoc.odoc/ odoc.odoc_utils/ odoc.search/ odoc.search_html_frontend/ odoc.syntax_highlighter/ odoc.xref2/ odoc.xref_test/ @short_title The odoc documentation generator {0 The [odoc] documentation generator} {audio:https://choum.net/panglesd/odoc.mp3} {b For a quick look at the [odoc] syntax, see the {{!cheatsheet}cheatsheet}!} {1:overview What is [odoc]?} [odoc] is a documentation generator for OCaml. It reads doc comments from your source files and your [.mld] files, then outputs HTML, LaTeX and man pages. The pages you are reading now are rendered using [odoc]. Text inside doc comments (delimited by [(** ... *)]) is marked up in [odoc] syntax: {[ val float_dsig : int -> float t (** [float_dsig d] rounds the normalised {e decimal} significand of the float to the [d]th decimal fractional digit and formats the result with ["%g"]. Ties are rounded towards positive infinity. The result is NaN on infinities and only defined for [0 <= d <= 16]. {b Warning.} The current implementation overflows on large [d] and floats. *) ]} These comments are picked up by [odoc] and {{!Fmt.float_dsig}turned into HTML}, LaTeX, or manpages. The syntax reference is a refinement of that explained in the {{:https://ocaml.org/manual/ocamldoc.html}OCaml manual}. The differences are described {{!page-ocamldoc_differences}here}. [odoc]'s main advantages over OCamldoc are: - an accurate {e cross-referencer} that can calculate links between types, modules, module types, and more. So if you've ever been baffled by exactly what the [t] was in [val f : A(M).t -> unit], [odoc] will link to it! - an {e expander}, which can expand complex module-type expressions while preserving their structure, including comment, includes, and more. If you've ever wondered what values there are in your module [M : Base.Applicative.S with type t := u], [odoc] will show you! {1 For Authors} For guidance on how to document your OCaml project, see {!page-odoc_for_authors}. {1 For Extension Authors} To create custom tags or code blocks, see {{!page-extensions}Writing Extensions}. This covers the extension API, support file registration, and critical pitfalls around JavaScript and SPA navigation. {1 For Integrators} To integrate [odoc] into your tool, webpage or any other setting, you'll need to understand {{!page-driver}how to drive [odoc]}.