Module Markup
Here, we test the rendering of comment markup.
#sectionsSections
Let's get these done first, because sections will be used to break up the rest of this test.
Besides the section heading above, there are also
#subsection-headingsSubsection headings
and
#sub-subsection-headingsSub-subsection headings
but odoc has banned deeper headings. There are also title headings, but they are only allowed in mld files.
#anchorsAnchors
Sections can have attached Anchors, and it is possible to link to them. Links to section headers should not be set in source code style.
#paragraphParagraph
Individual paragraphs can have a heading.
#subparagraph Subparagraph
Parts of a longer paragraph that can be considered alone can also have headings.
#stylingStyling
This paragraph has some styled elements: bold and italic , bold italic, emphasis, emphasis within emphasis, bold italic, superscript, subscript . The line spacing should be enough for superscripts and subscripts not to look odd.
Note: In italics emphasis is rendered as normal text while emphasis in emphasis is rendered in italics. It also work the same inlinks in italics with emphasis in emphasis.
code
is a different kind of markup that doesn't allow
nested markup.
It's possible for two markup elements to appear next to each other and have a space, and appear nextto each other with no space. It doesn't matter how much space it was in the source: in this sentence, it was two space characters. And in this one, there is a newline.
This is also true between non-code
markup
and code
.
Code can appear inside ``other`` markup. Its display shouldn't be affected.
#links-and-referencesLinks and references
This is a link. It sends you to the top of this page.
Links can have markup inside them: bold , italics, emphasis , superscript, subscript, and
`code
<#>__. Links can also
be nested `inside <#>__ markup. Links cannot be nested
inside each other. This link has no replacement text: #
. The text is filled in by odoc. This is a shorthand link: #. The text is also filled in by odoc in this case.
This is a reference to `foo
<#val-foo>__. References can have replacement text: `the value
foo <#val-foo>__. Except for the special lookup support,
references are pretty much just like links. The replacement text can
have nested styles: bold, italic, emphasis, superscript, subscript, and
`code
<#val-foo>__. It's also
possible to surround a reference in a style: foo
<#val-foo>`__ . References can't be nested inside references, and
links and references can't be nested inside each other.
#preformatted-textPreformatted text
This is a code block:
let foo = ()
(** There are some nested comments in here, but an unpaired comment
terminator would terminate the whole doc surrounding comment. It's
best to keep code blocks no wider than 72 characters. *)
let bar =
ignore foo
There are also verbatim blocks:
The main difference is these don't get syntax highlighting.
#listsLists
just creates a paragraph outside the list.
Similarly, inserting a blank line between two list items
creates two separate lists.
To get around this limitation, one
can use explicitly-delimited lists.
This one is bulleted,
`foo
<#val-foo>`__#unicodeUnicode
The parser supports any ASCII-compatible encoding, in particuλar UTF-8.
#raw-htmlRaw HTML
Raw HTML can be as inline elements into sentences.
If the raw HTML is the only thing in a paragraph, it is treated as a block element, and won't be wrapped in paragraph tags by the HTML generator.
#mathMath
Math elements can be inline: \int_{-\infty}^\infty
, or
blocks:
% \f is defined as #1f(#2) using the macro
\newcommand{\f}[2]{#1f(#2)}
\f\relax{x} = \int_{-\infty}^\infty
\f\hat\xi\,e^{2 \pi i \xi x}
\,d\xi
#modulesModules
`X
<Markup-X.html>`__`X
<Markup-X.html>`__`Y
<Markup-Y.html>`__#tagsTags
Each comment can end with zero or more tags. Here are some examples:
author antron
deprecated
a long time ago
parameter foo
unused
raises Failure
always
returns
never
see #
this url
see foo.ml
this file
see Foo
this document
since 0
before 1.0
it was in beta
version -1
#val-foo
val
foo : unit
Comments in structure items support markup, t oo.
Some modules to support references.
#module-X
module
`X
<Markup-X.html>__`\
\
:\
sig\
...\
end\
\
``
#module-Y
module
`Y
<Markup-Y.html>__`\
\
:\
sig\
...\
end\
\
``