extendable indent-based syntax for structured documents
includes forms that can be evaluated by custom procedures to create custom forms like lists, tables and other. nested expressions can be passed unevaluated or evaluated
inline: start and end somewhere on a line
indent: all immediately following further indented lines
line: from its start to the end of the line
scm: start with \. and have to contain valid scheme syntax
non-scm: start with \ and treat arguments as plaintext
plain text lines and indentation
"identifier" stands for a binding in the evaluation environment. custom environments can be set
\(identifier plaintext/itml-expression ...)
\identifier plaintext/itml-expression ... plaintext/itml-expression ... ...
\.(identifier scheme-expression ...)
\.identifier scheme-expression ... scheme-expression ... ...
\#identifier plaintext ... plaintext ...
the text is passed as a prefix-tree list without any nested expressions evaluated. this can be used for example to create block escaping
\identifier: plaintext/itml-expressions ... \.identifier: scheme-expressions ...
plaintext/itml-expression ...: plaintext/itml-expression ...
colons and backslashes can be escaped
\#escape content content content
is the base syntax used for a document format like markdown
it is experimental
the line before increased indent becomes the heading
this is a heading this is content and more example text a sub-heading more content
each empty line creates one linebreak in the output
example text more text after empty line
example \(emphasis test xy) text
example \(strong-emphasis test xy) text
\table \cell cell text cell text \cell cell text cell text
\.(hlink "http://unr" "title")
\.(image "http://unr" "title")
\#escape escaped content
\(scm-eval a ...) \(scm-qq a ...)
other itml expressions can be called but need the itml-state as the first argument. this state is available via the binding "s" in the environment
\(scm-eval (emphasis s "text") ...) \(scm-qq a ...)