Tin与Markdown的对比

本文对比了Tin与Markdown这两种富文本标记语言,从原生支持、外部支持、语法标准、书写感受、专业书写、标记限制、底层支持和应用场景等方面进行了详细分析。Markdown以其直观的文本标记和广泛的社区支持受到青睐,而Tin则在原生支持和特定场景下展现出优势,如Tkinter渲染和标签式标记。两者各有特点,适用于不同的写作需求。
摘要由CSDN通过智能技术生成

前言

为何对比

Tin与Markdown的定位是一样的,都是富文本标记语言,而且可以直接在相应的编辑器中快速编写,由渲染器提供样式,能够将思维着重放在文本编写,而不是文本样式上。

实际上,Markdown与Tin的侧重点不同,但都可以在实际中广泛运用。本文章将详细讲解Markdown与Tin的各个方面对比。

对比前提

本文不只是Markdown与Tin的优劣分析,更多的是两者之间“共同而有差别”创造目的。

此外,本文将仅从语言本身分析对比,与编辑器和渲染器无关(特别是对Markdown)。虽然我是Tin的作者,但不能说这一篇文章Tin占了重点,因为Tin和Markdown的侧重点不一样,没有所谓的竞争关系。而且,在写作方面,我也是常用Markdown的。

对比语言的本身,主要是对比原生Tin和原生Markdown的对比。非原生Markdown,会在名称前注明。

原生Markdown,即约翰·格鲁伯(John Gruber)与2004年创造的Markdown语法。


各类支持

原生支持

在原生支持这一块,Tin明显做得比Markdown好多了。

约翰·格鲁伯(John Gruber)只是在2004年和亚伦·斯沃茨(Aaron Swartz)一起创造了Markdown语言(语法),最初只能是先直接编写Markdown文本,再由各个开发者或开发商开发出来的渲染器渲染。也就是说,约翰·格鲁伯只提出了草案,他本人没有实现Markdown。此外,Markdown的原生支持目前已几乎不存在,见后文。

Tin使用TinEngine提供的TinText渲染,基于并支持Python/tkinter。Tin采用标签行式的标记格式,虽然与HTML的元素相似,但与HTML有本质差别,底层与Markdown类似。Tin提供原生的TinGroup组,见Tin知识库临时知识库

总体而言,Tin比Markdown在原生支持方面更负责。

外部支持

目前,支持Tin标记语言的只有TinGroup组,而Markdown有很多变体和拓展体。

Markdown的多变体和多拓展体,导致Markdown的原生支持没有了任何意义(后文会谈到)。这产生了一个问题:到目前为止,没有任何一个权威机构能规范Markdown语法。还好,目前多数解析器遵循github的Markdown规范。但是,不同解析器接受不同非原生Markdown标记的问题广泛存在。

语法标准支持

接着上面讲的,原生Markdown缺乏语法文件支持。Markdown最近的语法更新,是在2004年。现在流行的Markdown,都是在原生语法上拓展或者变体而来的,这也导致了前面将的问题,目前没有人能够说Markdown的标准语法是是什么样的。

John Gruber说过:“Markdown是一种书写格式,而不是一种发布格式。”,所以目前Markdown的方言现象依然严重,而且随着Markdown的发展和编辑器的出现,方言现象只会愈发严重。

Tin标记语言以TinGroup组提供的标签说明文档为标准,并且持续更新。任何拓展的Tin解析器,都应当遵循这个标准。此外,Tin提供标准渲染器TinEngine。Tin是一种发布格式

Markdown使用的是直观的文本段内标记,本质上很难进行新的标记格式拓展,这也是导致各种奇葩非原生Markdown语法出现的原因之一。Tin采用标签概念,能够对拓展或者是变体提供格式基础。特别是参数方面,Markdown不支持标记参数,而Tin明确规范了标签参数的解析格式。


书写感受

文段书写

根据个人感受吧。

用富文本编辑器编辑文字时,是两个不连续的动作,输入文字时双手放在键盘上,编辑文字则需要视线和手离开输入框和键盘,去寻找和点击功能按钮。很少人使用Word时是一次性输入全部文字后,再去编辑文字格式(然而这确实使用Word相对高效的方式)。这就是直接使用标记语言和富文本编辑的主要差别

Markdown的特点,是视线一直固定在光标处,手也不用移动,只是输入时使用不同的字符——文本字符和标记字符——就能同时完成编辑和输入。这种体验类似纸笔时代的书写,使用者全部的注意力都可以集中在将大脑中的语句输出,而不用不停地切换。

Tin的特点,不采用段内标记,而是在编写相应的正文之前,编写者先想好要使用的渲染格式标签,输入标签后,就可以直接编写要显示的文本或参数内容。同样不需要来回切换文本和样式之间的注意力,编写和样式思考一气呵成。

在文段书写方面,Tin与Markdown几乎一样。唯一的不同,则是Markdown可以在文段编写内考虑输出的格式,而Tin需要在编写正文之前输入想要使用的标签。

使用Tin的<middle>和<middles>标签也可以实现在文段编写内考虑输出格式的感受。而且,<middles>还额外支持字体颜色。

专业书写

所谓专业书写,包括:代码高亮、流程图、甘特图、公式、高级表格等富文本内容。

这部分的标记,原生Tin(目前)和原生Markdown(有代码高亮)都无法实现。

现在使用的Markdown之所以能够显示这些内容,是因为现在的变体和拓展Markdown都是为了契合当今互联网发展,在原生Markdown标准上添加新的标记格式而来的。说实话,标记语言确实在规范这一类的标记语法上很别扭。而且,当今的变体Markdown能够支持部分这些内容,还是归功于HTML,而不是Markdown本身。

Tin可以使用<html>标签渲染全部HTML5元素,Markdown支持部分HTML5元素,但各大Markdown渲染器都是使用HTML5来渲染Markdown的。

标记限制

这个很明显。

Tin受tkinter的限制。tkinter无法实现的,Tin就没有

Markdown受HTML的限制。HTML没有的,Markdown就没有。


底层支持

底层开发

众所周知,Markdown基于HTML,目前所有Markdown渲染器都是基于浏览器或者是HTMLlayout。也就是所,Markdown最终渲染出来的样式,就是浏览器渲染HTML的样式。

在我的知识范围内,我还不知道有不通过HTML,直接使用GUI渲染Markdown软件。

Markdown语法依靠解析器,将Markdown编辑转为HTML文本,再渲染HTML。

这导致了Markdown与编辑器开发的耦合性较差。

Tin依靠tkinter直接渲染,不存在兼容问题。

底层样式

虽然Markdown必须迁就于HTML,但这也给Markdown带来类似网页的渲染效果。

Tin的渲染效果更类似于桌面应用(GUI)。

语法拓展

人们正在不停地为Markdown添加新的语法以图实现更多的功能,但是功能与内容之间有不可调和的矛盾,基于源码输入的特性,在内容书写时要求的功能越多,需要添加的语法也会越多,势必会让Markdown易读易写的特性下降,影响内容的书写。这让Markdown要在可拓展与易读易写之间的权衡

Tin采用的标签格式,不需要记住特殊的标记语法,只要知道名称和参数即可。

底层解析

这涉及到开发问题,不详细说明,看看下面的演示就知道了。

Markdown解析:

**Tin**与==Markdown==的对比
解析:
<span md-inline="strong" class="md-pair-s"><span class="md-meta md-before">**</span><strong><span md-inline="plain" class="md-plain">Tin</span></strong><span class="md-meta md-after">**</span></span><span md-inline="plain" class="md-plain">与</span><span md-inline="highlight" class="md-pair-s"><span class="md-meta md-before">==</span><mark><span md-inline="plain" class="md-plain">Markdown</span></mark><span class="md-meta md-after">==</span></span><span md-inline="plain" class="md-plain">的对比</span></p>
渲染:
[渲染效果]

Tin解析:

<middle>*Tin;与;|Markdown;的对比
解析:
['<middle>',('*Tin','与','|Markdown','的对比')]
渲染:
[渲染效果]

或(OR)

<middles>*Tin==cyan==;与====;|Markdown==#ffff00==#3a4b5c;的对比====
解析:
['<middles>',('*Tin==cyan==','与====','|Markdown==#ffff00==#3a4b5c','的对比====')]
渲染:
[渲染效果]

渲染过程,Tin简单明了,Markdown可用于HTML。

Tin的<middles>支持字体颜色。


应用场景

Markdown

Markdown只能够用于文章编写。

Tin

Tin提供标准渲染器——TinEngine

Tin可以用来编写文章。

Tin也可以用来实现TinLayout,为tkinter布局提供一种新的布局方式。使tkinter能够有类似HTMLlayout的布局方式,增强tkinter的交互逻辑与UI逻辑的整合。

总结

由此看来,Tin除了实现富文本标记,还可以为tkinter的窗口开发提供便捷。


结语

篇幅原因,就写这么多。

实际上,Markdown和Tin的可比之处不至于这些。更多的价值,体现在实际运用当中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值