TinText

TinML语法

新版Tin标记语言(TinML)的语法沿用了上一版的语法,但是根据“易读性”进行了改进。

总体上,TinML的标记语法为<标签名>(参数1)(参数2)(...)

TinML的语法依然简单,分为单行标记、多行标记

单行标记

最常用的标记文本。

<tagname>arg1|arg2|...
在新版TinML中,使用“ ”分割标记参数。标记参数可以被理解为内容与指令。内容,就是要渲染的内容,而指令,就是告诉渲染器最终该如何呈现内容。

旧版中使用“;”分割,语法高亮中不显眼。

TinML中,大部分以参数形式确定渲染内容,比如<title>二级标题|2。这种情况下,不同位置的参数拥有严格的含义,比如<img>name|url|size,照片名称、地址、尺寸等,是不能够混淆的,这些对最后的渲染有着决定影响作用。

部分参数文本以内部标记形式存在。这些参数并非要严格遵循,但是同样在解释与渲染时会起到作用,比如<p>*bold|_underline|![link](url),这些具有开头特殊标记文本的内容,也是在告诉渲染器最终要如何呈现这部分内容。

单行标记中,由%VEB%转义|

多行标记

新版TinML支持规范的多行标记格式。

<tagname>arg1;
|arg2
|arg3
...
|end-arg|

第一个参数后加;,开启多行标记模式。每一个行开头加|,代表这是一个参数。最后一个参数末尾加|,表示该标签标记结束。其它任何位置的|不具有标记意义。

多行标记能够分离大块的内容与简洁的参数,以一长串引用说明文本为例。TinML的<n>的每一个参数都单独占一行,在编写式写在一行就会像下面这样:

<n>paragraph1paragraph1paragraph1|paragraph2paragraph2paragraph2|paragraph3paragraph3paragraph3

这样不方便作者编写、也不符合呈现逻辑。所以,可以用多行写法:

<n>paragraph1paragraph1paragraph1;
|paragraph2paragraph2paragraph2
|paragraph3paragraph3paragraph3|

另外,多行标记模式也可以用作区分标记参数。比如:

<url>text;
|url
|description|

这样的写法,使该标签的呈现内容、含义、参数信息清晰明了。

多行标记中允许空行与注释。

注释

新版TinML使用开头|-作为注释行标记。

注意,<p>只代表一个文本段落,因此多行表达是不被推荐的。若多行表达中存在|-,则作为注释忽略,不会理解成删除线。如果-标记不在首位,则当作正常参数解析。

普通文本

TinML只忽略空行与注释,无标签标记文本按照<p>标记一个参数处理。