TTML

From Esolang
Jump to navigation Jump to search

TTML which stands for "Teletype Markup Language" is a primitive markup language invented by Oren Watson in December 2014. It is based on using the control characters of Ascii as markup.

Key C   Name                 Markup
^@  \0  Null                 is ignored
^A  \1  Start of Header      makes text bold
^B  \2  Start of Text        makes text entirely normal
^C  \3  End of Text          makes text small (footnotes)
^D  \4  End of Transmission  ?????
^E  \5  Enquiry              makes text italic
^F  \6  Acknowledge          makes text underlined
^G  \a  Bell                 makes text highlighted
^H  \b  Backspace            moves cursor back, so you can overstrike
^I  \t  Tab                  moves cursor one half char forward
^J  \n  New Line             moves cursor down one line (note does not move cursor back to start of line)
^K  \v  Vertical Tab         moves cursor down one half-line (used for sub/superscripts)
^L  \f  Form Feed            moves to next page (on electronic media, may instead add horizontal line)
^M  \r  Carriage Return      moves cursor back to start of line
^N  \16 Shift Out            change to greek and math symbols
^O  \17 Shift In             change to cyrillic and other math symbols
^P  \20 Data Link Escape     change color to grey
^Q  \21 Data Control 1       change color to green
^R  \22 Data Control 2       change color to red
^S  \23 Data Control 3       change color to blue
^T  \24 Data Control 4       on paper, change to purple; on black terminal, change to gold/amber
^U  \25 Negative Acknowledge makes text strikethrough
^V  \26 Synchronize          makes text double width
^W  \27 End Text Block       makes text double height
^X  \30 Cancel               return to normal alphabet/font
^Y  \31 End of Medium        return to normal color
^Z  \32 Substitute           followed by a control, next char only affected. e.g. ^[^Na is alpha.
^[  \33 Escape               begin hyperlink
^\  \34 File Separator       next character ignored
^]  \35 Group Separator      end hyperlink
^^  \36 Record Separator     replaced with ^ when occurs in ^ notation.
^_  \37 Unit Separator       separate hyperlink location from its text
^?  \177 Delete               reverse video on terminal, boxed text on paper.

Example

^F^W^V^ATTML: TeleType Markup Language^M

^B^ATTML^B is a simple markup language that can be used for all kinds of documents.^M
the appearance of ^ATTML^B text is meant to evoke the look of mathematical and^M
scientific papers of the mid 20th century. ^ATTML^B uses simple ^Edirectives^B^M
which alter the appearance of text, reposition the flow of text, or allow stylistic^M
beauty within a minimalistic and retro aesthetic.^M
TTML directives consist of ascii control codes, or, for easier typing, the^M
caret-notation for those codes. Note the ^^^^ directive is used to insert a caret^M
into a TTML document.^M
Note that this documentation is best read by following its TTML source and rendered^M
version in parallel.^M


^WTTML Appearance Directives^M
^BThe most important appearance directive is ^^B which returns the appearance of^M
text to be entirely normal. ^^B cancels all previous appearance directives.^M
The ^^A directive creates ^Abold^B text for important terms. The ^^C directive^M
creates ^Csmall^B text for footnotes. The ^^E directive creates ^Eitalic^B text,^M
which can be used for the titles of works, and for ^Eemphasis^B. The ^^F directive^M
makes ^Funderlined^B text. The ^^G directive creates ^Ghighlighted^B text.^M
Finally the ^^U directive creates ^Ustruck thru^B text.^M
For coloring, use directives ^P^^P, ^Q^^Q, ^R^^R, ^S^^S, ^T^^T, ^Yand ^^Y to^M
return to black.^M
The ^^V directive doubles the ^Vwidth^B of text, while the ^^W directive doubles^M
the ^Wheight^B of text. For titles use both to create large text.^M


^WTTML Text Flow Directives^M
^BThe most important text flow directives are ^^M and ^^J which are used together^M
to end a line. You may also know ^^J as the newline character on UNIX. Alone,^M
^^J moves the flow of text to the next line, while ^^M moves the flow of text to the^M
beginning of the line. To insert a newline in TTML source without inserting^M
a ^^J you may escape it with the ^^\ directive.^M
Other text flow directives are used mostly for formatting mathematical symbols.^M
The ^^H directive allows one character to be superimposed on another, like these:^M
=^H/ a^H` L^H=. In literal terms it simply moves the cursor one space backward.^M
The ^^I directive moves one half character forward. It is used to centre fractions,^M
like so:^M
   __^H^H^I1^B^M
   22^M
The ^^K directive moves by one half-line down. It is used to create subscripts^M
and superscripts like so:^M
C H O + 3O  -> 2CO  + 3H O^M^K^\
 2 6      2       2     2^M
 0    -1    -2^M^K^\
2  + 2   + 2   + ... = 2^M


Implementation: partial in perl