InkMark,全新设计的一种轻量级的标记语言

2021-08-25 16:17:20 +08:00
 chingli

去年 6 月的时候,我在这里说准备设计一种轻量级标记语言,当时反响一般,我想主要原因是那时我自己都还没有把要做的事情完全想明白。一晃一年多时间都过去了,终于写出这个标记语言的初稿,并将它叫做 InkMark

相对于其他各种轻量级标记语言,InkMark 具有以下特性:

InkMark 不像 Markdown 几乎为每种常用元素定义了简单且直观的标记方法,它很“死板”,几乎是为所有元素定义了相同的标记规则。因此 InkMark 不如 Markdown 那么直观,也不如 Markdown 那样特别适合编写程序开发文档。但 InkMark 的标记规则相对更容易学习,并且其表达能力要强得多。其元素内容的边界范围也更加明确,不容易产生歧义。当只使用常用的标记功能时,它几乎和 Markdown 一样简单。

和 HTML 相比,InkMark 的完整模式几乎具有和 HTML 相匹配的描述能力,但元素边界不如 HTML 那样通过起始和结束标签项明晰标示。而 InkMark 的简写模式则要比 HTML 简单得多,适合手工书写,且源代码也更易读。InkMark 能做到在完整模式和简单模式间无缝切换,很好地在简单和功能强大间取得了平衡;不过两者进行切换的规则需要额外的学习成本。另外,针对学术文档的书写这一特殊目的,InkMark 通过加入一些自定义元素大大增强了其表达能力。

相对于 LaTeX 这种专业的学术论文排版系统,InkMark 主要专注于为文本添加常用的结构和语义,而其他更多的功能,如文本和页面样式,则大多交给其他程序(如和网页关联的层叠样式表 CSS )来完成。因此,其功能要远远少于 LaTeX,但也简单得多。


目前我只是用 HTML 格式写了一个长长的文档,真的是很长很长的一个文档,干这个事的难度比我预想的大多了。暂时先把这个文档发布在我的博客上:

InkMark:一种轻量级的标记语言

这么长的文档,里面肯定有表述错误,请大家不吝指出!

我自己没有精力编写该语言的解析器,我只是先把这个文档放出来,看看大家的反馈。如果反响不错,将会进一步投入精力,并希望能有更多的人参与这项工作。

期待大家的讨论,谢谢!

3204 次点击
所在节点    分享创造
33 条回复
2i2Re2PLMaDnghL
2021-08-26 15:57:52 +08:00
@chingli pandoc-flavored markdown
我记得哪个 markdown 分支是可以 ``s.find("`")`` 来绕过的,可以无限叠加,只会匹配相同数量的。
而对于里面恰好是一个 js template 那种,也可以 `` `12+34=${12+34}` `` 这样前后各加 1 个空格,会抹掉这两个空格。
chingli
2021-08-26 16:07:07 +08:00
@2i2Re2PLMaDnghL 我原来也是想着在 InkMark 中可选性地允许多层方括号,但要求左右两侧的方括号数目必须相等,这样可以规避该问题。例如:

` [[
s.find("]")
]][Python]

后来觉得规则太多,就没有用。现在其实还是应该考虑一下这个规则。
henryhu
2021-08-26 16:18:27 +08:00
tldr
zjm947373
2021-08-26 17:29:52 +08:00
😃一般这种事情被大多数人不看好的地方,其实不是一个东西的设计是否优秀,而是很多人只停留在设计上面,匆匆地宣布自己设计了什么,应该反过来先基于这种标记语言做一个非常好用的、优秀的编辑器 /记事本软件等,再回头来吹自己所设计的语言不迟
chingli
2021-08-26 22:55:53 +08:00
@zjm947373 有道理!
leokino
2021-08-27 04:06:17 +08:00
如果没有形成 Specification,没有写 reference parser,这个工作其实还非常早期。
leokino
2021-08-27 04:13:35 +08:00
作者对于[][]部分元素渲染的构思以及表格的展示还是很有创意的,但是其他部分略显多余,包括对其他 @链接元素的定义。这个标准独立存在的可能性不大,作者可以将上述两部分抽离出来,作为 Markdown 的插件实现,前景会更好一点。
chingli
2021-08-27 09:17:00 +08:00
@leokino 作者对于[][]部分元素渲染的构思以及表格的展示还是很有创意的。乱码了,不知道你写的“[][]”是什么。
leokino
2021-08-27 10:59:15 +08:00
@chingli 就是用 [=div][] 的形式表记 html 的想法。
yakun4566
2021-08-27 15:05:14 +08:00
别发了,学不动了 /:doge
althoughghgh
2021-08-27 18:24:20 +08:00
和 asciidoc 很像,它可以自定义扩展,加入自己的符号,输出的 html 也是可定制,模块化的
给主流语言写 parser 很困难把,另外还得弄个编辑器,不然也没人用
chingli
2021-08-29 10:12:28 +08:00
我准备再如下几方面改进:

1. 原来设定完全不用行首的水平空白作为标记,现在放弃这样做。许多时候,行首空白还是很有用的,适当利用行首空白进行标记能使文档更加美观。
2. 进一步多参考 Markdown 以及其他标记语言的优点,让显示效果更漂亮一点。
3. 想办法简化自动编号、图、表、公式、参考文献的表达,但还是想办法保留对编号的各种设置,毕竟这个东西真的很有用。
4. 设法使文档书写过程中基本可以不用转义。
5. 改个名字!

不过,还是要保留目前这种方括号对接龙的标记语法(只是对部分块级元素,可以通过简化而不写方括号),以及对额外的元素类型、属性的支持,从而使其具有与 HTML 相匹配的表达能力。毕竟,如果不这样,就没有存在的必要了。

谢谢各位!
sccbhxc
2021-09-06 13:40:20 +08:00
楼主加油

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/797958

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX