Skip to content

Latest commit

 

History

History
323 lines (292 loc) · 12.8 KB

smd4.md

File metadata and controls

323 lines (292 loc) · 12.8 KB

摘要

  • SMD是什么
  • 凭什么使用SMD?
  • SMD的语法
  • 旧版SMD支持情况

正文

1. SMD是什么

  • SmallMD是一个==解析语言==,它以纯文本形式编写,传入SMD解析器,解析为HTML输出。
  • SmallMD的前身是上火shanghuo的S1S2项目,后命名为SnMoreDevelop语言,最初设计与markdown语言无任何关系。
  • SmallMD是自==第二版==起逐步兼容了markdown语言语法。
  • SmallMD于==第三版==起不再推荐使用旧版SnMoreDevelop语言语法。并更名为SmallMD,逐步向markdown语言语法靠拢的。

2. 凭什么使用SMD?

  • 它兼容HTML,可以方便的转换为HTML格式。
  • 只要你有支持HTML5的浏览器,您就可以随时使用它。
  • 它也可以兼容Markdown语法。
  • 方便你的排版,方便你的调用,网站开始逐步的支持它。
  • 它正处在活跃的开发期,前景巨大。
  • 从SMD4开始,它已经转换为了JavaScript语言,并且开源。

3. SMD的语法

自从SMD2开始逐步兼容markdown语言语法,SMD的使用也变得更为简单。 当然这还不够,在未来,SMD将会以现在已支持的markdown语言语法为基础,不断的扩展更多更便于使用的功能。

详细请参见:山岚幽阳网站在线工具:www.snang.cc/tool/6.html

3.1 标题

1、使用=-标记居中的一级和二级标题。

一级标题 ========= 二级标题 ---------

效果:

一级标题

二级标题

2、使用#,表示默认的1-6级标题。

\ # 一级标题 \ ## 二级标题 \ ### 三级标题 \ #### 四级标题 \ ##### 五级标题 \ ###### 六级标题

效果:

一级标题

二级标题

三级标题

四级标题

五级标题
六级标题

3.2 引用与列表

1、引用 行开头使用符号>,引用是可以嵌套的,如:

\ > 区块引用 \ >> 嵌套引用

效果:

区块引用

嵌套引用

2、列表 行开头使用符号-+·,列表是可以嵌套的,嵌套列表是以3个空格为一个层级进行,如下:

\ - 列表1 \ - 列表2 \ - 列表21 \ - 列表22 \ - 列表3

效果:

  • 列表1
  • 列表2
    • 列表21
    • 列表22
  • 列表3

3、有序的列表 列表是可以使用数字排序表示的,只要使用1.这样的形式即可,数字列表的起始数字由列表第一项所编写的数字确定,这意味着之后的数字无论多大,又或者打乱顺序,都不会影响编号顺序。例如:

\ 1. 这是个有序的列表 \ 5. 列表这里的数字是乱的 \ 3. 被嵌套的这个列表起始数字为3 \ - 这里本应是数字,但为了方便,使用的普通列表的标记,这会得到自动修正 \ 3. 嵌套的列表也可以无序 \ - 列表的有序与无序,由列表相对应的第一项的标记决定(与嵌套无关) \ 1. 这里本应使用的普通列表的标记,即使写成有序的格式,也会自动修正 \ 5. 列表项

效果:

  1. 这是个有序的列表
  2. 列表这里的数字是乱的 3. 被嵌套的这个列表起始数字为3
    • 这里本应是数字,但为了方便,使用的普通列表的标记,这会得到自动修正
  3. 嵌套的列表也可以无序
    • 列表的有序与无序,由列表相对应的第一项的标记决定(与嵌套无关)
    1. 这里本应使用的普通列表的标记,即使写成有序的格式,也会自动修正
  4. 列表项

3.3 代码块

代码块在单独行用\```标记。如:

\ ``` #include <stdio.h> \int main(){ \ printf("Hi, SMD."); \ return 0; } \ ```

效果:

#include <stdio.h>
int main(){
    printf("Hi, SMD.");
    return 0;
}

3.4 事项

在相应行开头使用“-”后跟一个空格,再跟“[”后跟**“x”或一个空格**“]”后跟一个空格,可与同类行开头标记配合使用(如:引用),事项默认不会自行换行:

\ - [ ] 未办事项 \ - [x] 已办事项 \ > - [ ] 引用内容与未办事项配合

效果:

  • 未办事项
  • 已办事项
  • 引用内容与未办事项配合

3.5 分割线

需要在新行,且---时上一行只能为空字符或*-,但连续两行-只解析一行为hr,同时---***前后不能含有任何字符,除了换行,-数量必须3个以上):

\ *** \ ---

效果:



3.6 表格

表格应至少含有一行表头,一行表格标记,一行内容,如下即为一个最小的2×2表格:

表格|表头 \ ---|--- 表格|内容

表格的描述可以有以下几种:将列居中对齐:---:,将列右对齐---:,将列当作表头===,默认左对齐---:---。这里的-在开头两列至少应有3个,之后每列没有强制要求,当作表头即将这里的-改为=,当作表头后用于标记对齐方式的:将会被忽略。 表格可以被嵌套在引用等中,这只要把表格的前两行(也就是表头和描述表格格式的那两行),的之前加入引用等的标识即可,标识与表格描述间应避免存在空格或其它字符。表格允许是异形的,未在描述中声明的列将被默认对齐。具体如下

>表格示例|默认对齐|居中对齐|左对齐|右对齐|表头 `>========|--------|:------:|:-----|-----:|----` 表头列|内容|内容|内容|内容|内容 表格|内容|内容|内容|内容|内容|未声明列默认对齐 表格|内容|内容|内容|内容|内容|表格异形部分 表格|内容|内容|内容|内容|内容

效果:

表格示例|默认对齐|居中对齐|左对齐|右对齐|表头 ========|--------|:------:|:-----|-----:|---- 表头列|内容|内容|内容|内容|内容 表格|内容|内容|内容|内容|内容|未声明列默认对齐 表格|内容|内容|内容|内容|内容|表格异形部分 表格|内容|内容|内容|内容|内容

3.7 链接

链接的格式为: [链接内容](链接地址)[链接内容](链接地址"链接说明")[链接编号]:链接地址"链接内容"[链接内容][链接说明](链接地址)这4种形式 使用[链接编号]:链接地址"链接内容"的形式可以配套使用[链接内容][链接编号] 效果:

行内式的链接标签,这就是个链接,无论行内式或者参考式,链接始终是行内元素,前后可以存在内容。


参考式的链接标签:[点击这里在新标签页打开参考的地址,并在当前页面跳转到参考地址的位置][1],如果没有参考的地址,或链接编号格式错误,链接将依然存在,但错误将在用户点击后,输出在用户浏览器的调试控制台 参考的地址:[1]:#"这是一个参考式的链接",参考式链接的链接编号应当尽可能只使用26个字母加数字组合,不要使用空格等

3.8 图片

图片的格式为: ![图片说明](图片地址)[图片说明](图片地址)"图片长:图片宽"这2种形式 效果:

图片是行内标签,这里的地址用的base64表示,但通常应使用URL表示"50:100",图片前后可以存在内容

3.9 文本样式

标记:\内容`,前后分别1个`,通常用于标出指数,这个符号一般位于键盘左上角数字1左侧,通常标记中的内容不会再存在其它样式 删除线:内容,前后分别2个~,这个符号一般位于键盘左上角数字1左侧 下划线:++内容++ 上标字:^^内容^^,前后分别1或2个^,通常用于标出指数,^一般位于英文模式下的键盘数字6上 下标字:^^^内容^^^,前后分别3个^,也就和上标字相反了 高亮:==内容== 强调:!!内容!! 倾斜并加粗:内容内容,多个*或_混合时将按照单个优先原则执行倾斜并加粗 加粗:内容内容 倾斜:内容内容`

效果: 正常文本 倾斜并加粗 加粗 倾斜 标记 删除线 ++下划线++ ^^上标字^^ ^^^下标字^^^ ==高亮== !!强调!!

3.10 关于转义等

对于行开头的情况,在遇到第一个\ 后,这个反斜杠会被清理,之后的标识被当作内容处理。 标识之后不会对是否存在空格进行检查,行开头的转义如果之后有空格,应加在空格之前,而非紧跟期望转义的项。

对于行内的情况,除了标记使用的\``需要反斜杠转义,其它的内容应当使用标记包含起来实现。 需要注意的是`\ ``前的第一个空格会被消除,这样也就便于你对下面特殊情况做描述。如下表:

需要描述内容 写法 说明
&lt;(内容中) &amp;lt; 内容中,使用HTML的实体来描述尖括号
>(行开头) \> 行开头遇到转义符号后,之后内容均为文本
内容(行开头) \ 内容 一般的行开头要保留空格,应在要保留的空格前加转义符
``` `\`` 转义符号转义```
`\`` `\`` 最后一个反斜杠将用于转义,其它不影响
\\ \\ 内容后跟一个空格,空格会被消除
\\ \\ 内容后跟两个或多个空格,最后一个空格会被消除,其它不影响
```(位于行开头) `\`` 行开头需要得到\``应当先用一个\ 把行开头进行清理,然后再写\``
\ (位于结尾) \ 结尾和内容中的反斜杠,都直接书写即可,不受转义影响

4 旧版SMD支持情况

旧版相关的内容,已改为添加到了代码块的解析功能中,加入后你可以在代码块开头的\``的后面加入SMD1&2`,然后在代码框的范围内使用旧版功能. 旧版功能已被淘汰,但仍然被兼容。旧版样式设置相关代码已被移除,SMD3版本起,已一律由页面使用样式表决定。下面引用框中是使用旧版解析的一组例子:

#1SMD1功能 #2旧版代码框 p- int main(){ return 0; } -p #2旧版块元素 bb 这是一个块 cc #2旧版标题 l1靠左一号标题 l2靠左二号标题 l3靠左三号标题 l4靠左四号标题 l5靠左五号标题 l6靠左六号标题 c1居中一号标题 c2居中二号标题 c3居中三号标题 c4居中四号标题 c5居中五号标题 c6居中六号标题 r1靠右一号标题 r2靠右二号标题 r3靠右三号标题 r4靠右四号标题 r5靠右五号标题 r6靠右六号标题 #1自动一号标题 #2自动二号标题 #3自动三号标题 #4自动四号标题 #5自动五号标题 #6自动六号标题

#2旧版分割线
这是分割线
hr
#2旧版换行
-=换行
br
#2旧版引用
yy引用的内容

-引用的内容 #2旧版链接与图片 a-我是一个链接,,# i-data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUAQMAAAC3R49OAAAAA1BMVEWKqIm5Yq7pAAAADElEQVQImWNgoC4AAABQAAGmLdqcAAAAAElFTkSuQmCC iadata:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUAQMAAAC3R49OAAAAA1BMVEWKqIm5Yq7pAAAADElEQVQImWNgoC4AAABQAAGmLdqcAAAAAElFTkSuQmCC,,# #2旧版转换与直接输出 转换输出 -= zhprintf("hello"); -= 直接输出 -= zzprintf("hello"); #1SMD2功能 #2旧版行内元素 行内元素 x- 实质看不出 -x 会有什么变化 #2旧版列表和表格 旧版的列表与表格已不再提供支持,现在以换行的形式输出 u=列表已不再提供支持 u=列表已不再提供支持 -= t-表格,,表格,,表格 t-不再,,提供,,支持 t-表,,格,,不再提供支持 #1SMD3功能 #2旧版段落 p= 这是一段文本 -=这段文本换行了 =p p= 这是另一段文本 -=这段文本也换行了 =p #2旧版可换行等的引用 b- 这是引用中的内容 -=这个引用可以换行 -b #2旧版代码标记 c- 这是一个标记 -c

以上就是现目前旧版的兼容解析的一个例子,现已不推荐使用,但你确实需要使用,也不用担心我们未来会删除的可能性,我们只是不会再对旧版解析进行维护,但我们依旧会保留这些非常烂功能。

### 感谢与支持
首先要感谢`fmq03`在很早以前的SMD1编写期间的协助测试。
同时还要感谢`MFC.jar`在SMD4编写时提出的非常不错的建议。
SMD4在经过`上火`(`shanghuo`)3天的设计与编写,现在已经基本完成。
未来我们还将计划加入曾经`S1S2`等程序设计中,优质的部分,以及我们计划中的一些高级的功能。
如果你想支持我们,我们的网站[www.snang.cc](http://www.snang.cc)随时欢迎您的到来。
by 山岚幽阳