山岚幽阳
登录
菜单
网站首页
山岚幽阳
山栖涧
软件下载
EGE快配包
Srp
云跨教学管理
交流平台
博客
在线论坛
留言板
通用反馈平台
程序文档
SMD解析器
君聊
Srp
云跨教学管理
Mist
关于我们
古今简记
合作同行
隐私协议
版权说明
开源条款
联系我们
这里曾是,上火的学习交流平台-山岚幽阳
SMD4解析器
## 摘要 >- 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语言*语法为基础,不断的扩展更多更便于使用的功能。 #### 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. 这是个有序的列表 5. 列表这里的数字是乱的 3. 被嵌套的这个列表起始数字为3 - 这里本应是数字,但为了方便,使用的普通列表的标记,这会得到自动修正 3. 嵌套的列表也可以无序 - 列表的有序与无序,由列表相对应的第一项的标记决定(与嵌套无关) 1. 这里本应使用的普通列表的标记,即使写成有序的格式,也会自动修正 5. 列表项 #### 3.3 代码块 代码块在单独行用`\`\`\``标记。如: >\ \`\`\` >\#include <stdio.h> >\int main(){ >\ printf("Hi, SMD."); >\ return 0; >\} >\ \`\`\` 效果: ``` #include
int main(){ printf("Hi, SMD."); return 0; } ``` #### 3.4 事项 在相应行开头使用“-”后跟一个空格,再跟“[”后跟**“x”或一个空格**“]”后跟一个空格,可与同类行开头标记配合使用(如:引用),事项默认不会自行换行: >\ - [ ] 未办事项 >\ - [x] 已办事项 >\ > - [ ] 引用内容与未办事项配合 效果: - [ ] 未办事项 - [x] 已办事项 > - [ ] 引用内容与未办事项配合 #### 3.5 分割线 需要在新行,且`---`时上一行只能为空字符或`*`与`-`,但连续两行`-`只解析一行为hr,同时`---`或`***`前后不能含有任何字符,除了换行,`-`数量必须3个以上): >\ *** >\ --- 效果: *** --- #### 3.6 表格 表格应至少含有一行表头,一行表格标记,一行内容,如下即为一个最小的2×2表格: > 表格|表头 >\ ---|--- > 表格|内容 表格的描述可以有以下几种:将列居中对齐`:---:`,将列右对齐`---:`,将列当作表头`===`,默认左对齐`---`或`:---`。这里的`-`在开头两列至少应有3个,之后每列没有强制要求,当作表头即将这里的`-`改为`=`,当作表头后用于标记对齐方式的`:`将会被忽略。 表格可以被嵌套在引用等中,这只要把表格的前两行(也就是表头和描述表格格式的那两行),的之前加入引用等的标识即可,标识与表格描述间应避免存在空格或其它字符。表格允许是异形的,未在描述中声明的列将被默认对齐。具体如下 >\>表格示例|默认对齐|居中对齐|左对齐|右对齐|表头 >\`>========|--------|:------:|:-----|-----:|----` > 表头列|内容|内容|内容|内容|内容 > 表格|内容|内容|内容|内容|内容|未声明列默认对齐 > 表格|内容|内容|内容|内容|内容|表格异形部分 > 表格|内容|内容|内容|内容|内容 效果: >表格示例|默认对齐|居中对齐|左对齐|右对齐|表头 >========|--------|:------:|:-----|-----:|---- 表头列|内容|内容|内容|内容|内容 表格|内容|内容|内容|内容|内容|未声明列默认对齐 表格|内容|内容|内容|内容|内容|表格异形部分 表格|内容|内容|内容|内容|内容 #### 3.7 链接 链接的格式为: `[链接内容](链接地址)`或 `[链接内容](链接地址"链接内容")`或 `[链接说明]:链接地址"链接内容"`或 `[链接内容][链接说明](链接地址)`这4种形式 效果: > 链接是行内标签,[这就是个链接](#"这是链接内容,链接地址为#号"),链接前后可以存在内容 #### 3.8 图片 图片的格式为: `![图片说明](图片地址)`或 `[图片说明](图片地址)"图片长:图片宽"`这2种形式 效果: > 图片是行内标签,[这里的地址用的base64表示,但通常应使用URL表示](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUAQMAAAC3R49OAAAAA1BMVEWKqIm5Yq7pAAAADElEQVQImWNgoC4AAABQAAGmLdqcAAAAAElFTkSuQmCC)"50:100",图片前后可以存在内容 #### 3.9 文本样式 标记:`\`内容\``,前后分别1个`\``,通常用于标出指数,这个符号一般位于键盘左上角数字1左侧,通常标记中的内容不会再存在其它样式 删除线:`~~内容~~`,前后分别2个`~`,这个符号一般位于键盘左上角数字1左侧 下划线:`++内容++` 上标字:`^^内容^^`,前后分别1或2个`^`,通常用于标出指数,`^`一般位于英文模式下的键盘数字6上 下标字:`^^^内容^^^`,前后分别3个`^`,也就和上标字相反了 高亮:`==内容==` 强调:`!!内容!!` 倾斜并加粗:`***内容***`或`___内容___`,多个`*或_`混合时将按照单个优先原则执行倾斜并加粗 加粗:`**内容**`或`__内容__` 倾斜:`*内容*`或`_内容_` 效果: 正常文本 ***倾斜并加粗*** **加粗** *倾斜* `标记` ~~删除线~~ ++下划线++ ^^上标字^^ ^^^下标字^^^ ==高亮== !!强调!! #### 3.10 关于转义等 对于行开头的情况,在遇到第一个`\ `后,这个反斜杠会被清理,之后的标识被当作内容处理。 标识之后不会对是否存在空格进行检查,行开头的转义如果之后有空格,应加在空格之前,而非紧跟期望转义的项。 对于行内的情况,除了标记使用的`\``需要反斜杠转义,其它的内容应当使用标记包含起来实现。 需要注意的是`\``和`\ \``前的第一个空格会被消除,这样也就便于你对下面特殊情况做描述。如下表: 需要描述内容|写法|说明 ------------|----|--- `<`(内容中)|`<`|内容中,使用HTML的实体来描述尖括号 `>`(行开头)|`\>`|行开头遇到转义符号后,之后内容均为文本 ` 内容`(行开头)|`\ 内容`|一般的行开头要保留空格,应在要保留的空格前加转义符 `\``|`\\``|转义符号转义`\`` `\\``|`\\\``|最后一个反斜杠将用于转义,其它不影响 `\\ `|`\\ `|内容后跟一个空格,空格会被消除 `\\ `|`\\ `|内容后跟两个或多个空格,最后一个空格会被消除,其它不影响 `\``(位于行开头)|`\\\``|行开头需要得到`\``应当先用一个`\ `把行开头进行清理,然后再写`\\`` `\ `(位于结尾)|`\ `|结尾和内容中的反斜杠,都直接书写即可,不受转义影响 ### 4 旧版SMD**支持情况**? 旧版相关的内容,已改为添加到了代码块的解析功能中,加入后你可以在代码块开头的`\`\`\``的后面加入`SMD1&2`,然后在代码框的范围内使用旧版功能. 旧版功能已被淘汰,但仍然被兼容。旧版样式设置相关代码已被移除,SMD3版本起,已一律由页面使用样式表决定。下面引用框中是使用旧版解析的一组例子: >```SMD1&2 #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 山岚幽阳