# examples of custom markup languages that use indent # for note taking an indent based, machine and human readable text format for titled, separated parts of text or notes. words can be tags or make up a headline. nested structures can be created in content, but do not need to be parsed. if words are tags, then note lists can be processed to extract, merge or analyse notes by tag. an itpn management utility is part of [sph-script](https://github.com/sph-mn/sph-script). "indent tree packet notation", itpn ~~~ word word content-line content-line content-line content-line word content-line content-line ~~~ ## syntax * packet: [prefix content] ... * prefix: word [" " word] ... * content: ["\n" indent any-character ...] ... # for document markup here is an example of an indentation based syntax for structured documents. it includes forms that can be evaluated by custom procedures to create output like lists, tables and more. "indent tree markup language", itml ## expression properties ### scope * inline: start and end somewhere on a line * indent: include all immediately following further indented lines * line: from their start to the end of the line ### content interpretation * scm: start with # and arguments have to be valid scheme syntax * text: start with ## and arguments are plaintext ### evaluation phase * ascend: itml expressions in arguments have been evaluated * descend: itml expressions in arguments have not been evaluated ## inline expressions ### inline-scm ~~~ #(identifier scheme-expression ...) ~~~ ### indent-scm ~~~ #identifier scheme-expression ... scheme-expression ... ... ~~~ ### inline-text ~~~ ##(identifier plaintext/itml-expression ...) ~~~ ### indent-text ~~~ ##identifier plaintext/itml-expression ... plaintext/itml-expression ... ... ~~~ ### line-scm, line-text ~~~ #identifier: scheme-expressions ... ##identifier: plaintext/itml-expressions ... ~~~ ### indent-descend ~~~ ###identifier plaintext ... plaintext ... ~~~ the text is passed as a parsed tree without any nested expressions evaluated. this can be used for example to create block escaping ## headings a line before increased indent becomes a heading ~~~ this is a heading this is content and more example text a sub-heading more content ~~~ ## line breaks each empty line, two newlines, creates one line break in the output ~~~ example text more text after empty line ~~~ ## escaping inline expression prefixes, colons and backslashes can be escaped with a backslash ~~~ \: \# \## \### \\ ~~~ block escapes ~~~ ###escape content content content ~~~