Syntax of TMd

创建时间:
2014-01-04 23:13
最近更新:
2018-10-28 18:51

Overview

TMd 是 "Tony Markdown" 的缩写.

TMd 由以下 2 部分组成:

  1. "从文本 到 HTML" 的语法. 该语法基于 Markdown, 有一些改动与扩展.
  2. 将 "TMd 文本" 转换成 HTML 的程序. 我编写了 C# 与 JavaScript 两个版本.

以下是 TMd 的完整语法:

转义

"开始中括号" 被转义后 将不再 被解析为链接

\[已转义的中括号]
[未转义的中括号]

转义 链接中的括号 (MSDN 版本号)

[Version: Visual Studio 2015](http://msdn.microsoft.com/zh-CN/library/x9fsa0sw(v=vs.140\))
[Version: Visual Studio 2013](http://msdn.microsoft.com/zh-CN/library/x9fsa0sw(v=vs.120\))
[Version: Visual Studio 2012](http://msdn.microsoft.com/zh-CN/library/x9fsa0sw(v=vs.110\))
[Version: Visual Studio 2010](http://msdn.microsoft.com/zh-CN/library/x9fsa0sw(v=vs.100\))
[Version: Visual Studio 2008](http://msdn.microsoft.com/zh-CN/library/x9fsa0sw(v=vs.90\))
[Version: Visual Studio 2005](http://msdn.microsoft.com/zh-CN/library/x9fsa0sw(v=vs.80\))

转义 链接中的中括号

准确来说这是 "HTML 字符实体",而不是 "转义"。
例如以下链接中的中括号,TMD 源码中 已将 [ 替换为 [] 替换为 ],如不替换 TMD 无法正常解析为链接:
BigInteger(Byte[]) 构造函数

其他

((75#999999)-- [Expression Tree 上手指南 (一\)](http://www.cnblogs.com/Ninputer/archive/2009/08/28/expression_tree1.html))

在本文中搜索 "转义",可找到其它需要转义的情形

段落 (p)

Syntax

一行文字 或 连续多行 构成一个段落.
一个空行将其上下的文字分隔为两个段落.

Example

The first paragraph. The first paragraph. The first paragraph. The first paragraph. The first paragraph. The first paragraph. The first paragraph. The first paragraph. The first paragraph.

The second paragraph. The second paragraph. The second paragraph. The second paragraph. The second paragraph. The second paragraph. The second paragraph. The second paragraph. The second paragraph. The second paragraph. The second paragraph. The second paragraph. The second paragraph. The second paragraph. The second paragraph. The second paragraph.

换行 (br)

Syntax Example

Similarly, the syntax of Break-Line is also very natural.
the second line,
the third line.

Output of above T.Md

Similarly, the syntax of Break-Line is also very natural.
the second line,
the third line.

续行 (Continuation Line)

Syntax

在行尾使用 + 可将下一行追加在前一行末尾.
续行时, 如果需要在被连接的两行文字之间插入一个空格, 需添加 '反斜杠与一个空格'.

Example

The 1st line,+
the 2nd line.
The 3rd line,\ +
the 4th line.

Output of above T.Md

The 1st line,the 2nd line.
The 3rd line, the 4th line.

Horizontal Rule (hr)

Syntax

3 个或更多 ~ 将被 T.Md 转换为 水平分隔线.
字符 ~ 在标准键盘上位于 Tab 键的上方.

Examples

~~~
~~~~~~~~~~~~~~~~~

Output of above T.Md



Headers (h1-h6)

Syntax

1-6个 # 字符对应着 h1-h6.
如果需要 T.Md 生成 HTML-hx-tag 时, 生成 id 属性, 可在行尾加上 #ID, 其中ID是自定义的.

Examples

### This is a biggest header with id-attribute #ID
######This is a smallest header not id-attribute

Output of above T.Md

This is a biggest header with id-attribute

This is a smallest header not id-attribute

Note

T.Md 为上述示例代码生成的 id 属性为 id="TMd_ID".

Strong (strong)

T.Md: It's bedroom, not !!bad!!room!
Output: It's bedroom, not badroom!

Emphasis (em)

T.Md: B**a**n**a**n**a** has three 'a'.
Output: Banana has three 'a'.

Superscript (sup)

T.Md: 3^^2^^ is 9.
Output: 32 is 9.

Subscript (sub)

T.Md: Water is H__2__o.
Output: Water is H2o.

Delete and Insert (del & ins)

T.Md: A dozen is --20-- ++12++ pieces.
Output: A dozen is 20 12 pieces.

Code Inline (code)

T.Md: The ``alert(str);`` can use for debug.
Output: The alert(str); can use for debug.

Code Block (pre-code)

Syntax

```
some codes
```

Note

字符 ` 是重音符 (backtick quotes), 在标准键盘上位于 Tab 键的上方.
被两行 ``` (3个重音符) 包围的 1 行或多行, 将被 T.Md 转换为代码块.
T.Md 将代码块前后的 ``` 分别替换为 <pre><code> 与 </code></pre>, 因此, Code Block 中的空白字符 (空格符, 制表符 与 换行符等) 都因 HTML-pre-tag 原样输出.

Example

var str = "I'm JavaScript string.";
var re = /^[0-9A-F]+$/gim;
function FunName(argument0, argument1){
	for(var i=0; i<3; i++){
		alert(argumetn0 * argument1 / i);
	}
}

	//本行前有一个tab. 下一个句号前有3个空格   . 以下是1个空行:

//以下是3个空行:



//这一行文字较多, 用于演示 T.Md 代码块中的自动换行. 这一行文字较多, 用于演示 T.Md 代码块中的自动换行. 这一行文字较多, 用于演示 T.Md 代码块中的自动换行. 这一行文字较多, 用于演示 T.Md 代码块中的自动换行. 这一行文字较多, 用于演示 T.Md 代码块中的自动换行. 这一行文字较多, 用于演示 T.Md 代码块中的自动换行. 这一行文字较多, 用于演示 T.Md 代码块中的自动换行. 这一行文字较多, 用于演示 T.Md 代码块中的自动换行. 这一行文字较多, 用于演示 T.Md 代码块中的自动换行.

Block Quote (blockquote-p)

Syntax

:::
quote content
:::

Note

被两行 ::: (3个冒号) 包围的1行或多行内容, T.Md 会识别为块引用.
T.Md 会将这些内容包装在 <p></p> 中.
如果内容中有空白行, T.Md 会生成多个 <p></p>.
最后, 包装有内容的一个或多个 <p></p>, 会整体包装在
<blockquote>

</blockquote>
标签之间.

Example

Men’s judgments are a parcel of their fortunes; and things outward do draw the inward quality after them, to suffer all alike.
-- Shakespeare

Ordered List (ol-li)

Syntax

如果一行或多行文字以 数字 + 小数点 + 空格 开头, T.Md 会转换为 有序列表.
转换结果中的序号总是从 1 开始递增, 因此用户的输入可为任意数字, 通常每行都使用数字 1 来简化编辑工作, 下面的示例演示了这个技巧.

Example

1. a
1. b
1. c

Output of above T.Md

  1. a
  2. b
  3. c

Unordered List (ul-li)

Syntax

如果一行或多行文字以 星号 + 空格 开头, T.Md 会转换为 无序列表.

Example

* a
* b
* c

Output of above T.Md

  • a
  • b
  • c

预定义链接与图片的网址 (URL Predefine)

Syntax:
[custom reference key of predefine link ]:URL "title of link "
[custom reference key of predefine image]:URL "title of image"

Examples:
[home]:/Home "Goto homepage."
[icon]:/favicon.ico "TMd for Writer"

Note:
URL Predefine consists of Reference Key, URL and title.
URL Predefine 语法通用于链接与图片.
URL Predefine 不会被输出, 它应该被链接或图片引用.
每个 URL Predefine 必须独占一行.
URL Predefine 如置于 HTML-table-tag 等块级元素内部将出错.
如多个 URL Predefinereference key 相同将导致定义失败, 输出中将以红色显示.

链接 (a)

Full Syntax

[Link with Title](http://wikipedia.org "Title of link.")

The output of above T.Md: Link with Title

Note:
Full syntax consists of text, URL and title.

Omit Title Syntax

[Link without Title](http://wikipedia.org)

The output of above T.Md: Link without Title

Note:
省略 title 之后, 生成的 HTML-a-tag 没有 title 属性, 因此没有鼠标悬停提示.

Shorthand Syntax

[http://wikipedia.org/ ]
[https://wikipedia.org/]
[ ftp://wikipedia.org/]

The output of above T.Md:
http://wikipedia.org/
https://wikipedia.org/
ftp://wikipedia.org/

Note:
URL must be surrounded between [ and ].
URL must start with http, https or ftp.

Reference Syntax

Predefine first:
[home]:/Home "Goto homepage."
Then create a link by text and reference key:
[Pls click to back home][home]

The output of above T.Md: Pls click to back home

Reference Syntax (shorthand)

[Home]

The output of above T.Md: Home

Note:
The link's text is equal to reference key now.

图片 (img)

Full Syntax

![alt of image](/favicon.ico "title of image")

The output of above T.Md: alt of image

Note:
Full syntax consists of alt, URL and title.

Omit Title Syntax

![alt of image](/favicon.ico)

The output of above T.Md: alt of image

Note:
If the title is omited, will use alt instead of it automatically.

Shorthand Syntax

![/favicon.ico ]

The output of above T.Md:
![/favicon.ico ]

Note:
URL must be surrounded between ![ and ].

Reference Syntax

Predefine first:
[key of image]:/favicon.ico "title of image"
Then create an image by alt-attribute and reference key:
![alt of image][key of image]

The output of above T.Md: alt of image

Reference Syntax (shorthand)

![key of image]

The output of above T.Md: key of image

Note:
The image's alt-attribute is equal to key of image now.

图片链接 (a-img)

Full Syntax

Predefine an image and a link first:
[key of image]:/favicon.ico "title of image"
[key of link ]:/Home "title of link"

Then create an Image-Link by nested Url-Predefine:
[![alt of image][key of image]][key of link]

The output of above T.Md: alt of image

Note:
Now the link's title is title of image\r\ntitle of link,
and the image's alt is alt of image.

Shorthand Syntax

[![key of image]][key of link]

The output of above T.Md: key of image

Note:
Now the link's title is title of image\r\ntitle of link,
and the image's alt is key of image.

Custom Style (span)

T.Md 通过 HTML-span-tag, 向用户提供了设置 color, font-size, bold, italic, overline, strike, underline 的接口.

Syntax

((styles)text)

text 参数:

  • 不支持换行.
  • 如需包含 ), 必须转义, 如: \).

styles 参数:

可以是以下 3 种内容的组合:

  1. 表示 font-size 的整数值, 小于 100 则文字变小, 大于 100 则文字增大.
  2. BIOSU 这 5 个字母中的任意 1 个或多个, 它们将开启对应的: bold, italic, overline, strike, underline 样式.
  3. 表示 color 的 16 进制值, 必须以 # 开头. 例如 #ff8000.
  • 以上 3 种内容的组合, 可为任意次序, 忽略大小写.
  • 以上 3 种内容, 至少需要输入 1 种来生成样式, 因为在 T.Md 中, 未设置样式的 span 标签是无意义的.

Examples:

T.Md: ((#ff0000)红色)
Output: 红色

T.Md: ((300)3倍字号)
Output: 3倍字号

T.Md: ((b)加粗)
Output: 加粗

T.Md: ((i)斜体)
Output: 斜体

T.Md: ((o)上划线)
Output: 上划线

T.Md: ((u)下划线)
Output: 下划线

T.Md: ((s)删除线)
Output: 删除线

T.Md: ((150biosu#ff8000)应用全部样式: font-size, blod, italic, overline, strike, underline, color)
Output: 应用全部样式: font-size, blod, italic, overline, strike, underline, color

Table (table-caption-tr-th/td)

Caption
T.Md 表格前必须至少空 1 行
T.Md 表格由 3 个或更多个连续的 - 来标识表格的开始
T.Md 将标识表格开始的 --- 之后的内容解析为表格标题 例如本表格的标题为Caption
T.Md 表格遇空行结束
设置列的对齐属性
本表格的 T.Md 源码的第 1 行是 ---:|:|:--- 其中的冒号用于标识该列的对齐属性
总共可指定以下 3 种对齐属性
本列右对齐 本列居中对齐 本列左对齐
未显式使用冒号指定对齐属性的列默认为左对齐
T.Md 表格的行,列,单元格
T.Md 表格中的每一行都将被解析为 HTML 表格行
T.Md 用 | 分隔单元格 如需在 T.Md 表格中输出 | 可使用转义 \|
本单元格的内容前有 * 标识,T.Md 将解析为 th 单元格。
内容前无 * 标识的单元格,T.Md 将解析为 td 单元格。
T.Md 会遍历所有行,从而找出最大列数,并以此为准。
本示例中,第1行列数最多,T.Md 会自动在其它行的末尾追加空单元格。
T.Md 行内元素,即使在诸如 table 之类的各种块元素内部,都会被正常解析
Superscript 32 is 9.
Subscript Water is H2o.
Strong It's bedroom, not badroom!
Emphasis Banana has three 'a'.
Code Inline The alert(str); can use for debug.