我设计了一种文本标记格式,用来代替 Markdown 格式。请大家一定来夸我,或者拍砖:)

2016-02-03 23:12:11 +08:00
 zxgngl

它的语法特别简单,只有一条:

(标签 属性 1=|属性内容 1| 属性 2=|属性内容 2| . 内容)

虽然它的语法简单,但语义十分强大,强大到与 XML (或 HTML ) 的语义表达能力一样。

例子们:

图片:

(img src=|photo.jpg| width=|60px| height=|40px|)

说明:如果没有“内容”的话,“.”可以省略。

代码:

(@code lang=|C++| .
#include <iostream>

int main()
{
    std::cout << "Hello, World!\n";
}
@)

说明:不需要对插入的代码中的“(”和")"进行任何“转义”,只需要使用“(@”和“@)”来代替“(”和")"即可。“@”的个数个可以任意多,只要前后匹配即可。

代码 2 :

(@@code lang=|Scheme| .
(define weird-string
  (lambda ()
    "(@)"))
@@)

说明:无论插入的代码中包含任何字符或字符串,都不需要转义。

普通的文本格式化可以很简单:

(p . 这个句子里有(i . 斜体)字。)

希望大家喜欢,有什么问题请留言:)

13528 次点击
所在节点    程序员
144 条回复
zxgngl
2016-02-04 00:52:49 +08:00
@learnshare @yuuko 虽然 XML 的表达能力几乎是不可超越的极限了(我们设计的新语法也达到了这个极限),但 XML 的书写可能会非常复杂,或者不方便。

* 我们的新语法中,插入任何代码都是不需要转义的,方便拷贝来、拷贝去,代码内容不会被破坏。

*新语法中可以对代码进行“再格式”, Markdown 似乎做不到这点。

*新语法中可以通过 plugin 的方式支持其他的格式,比如 CSV 表格,不需要像 Markdown 那样手动画 ASCII 表格。

*比 XML 敲的字少。

*只有一条语法,几个特殊字符,而且绝大多数情况下不会遇到需要转义的情况。

其他的好处让我再想想……
wph95
2016-02-04 00:58:22 +08:00
> Jade http://jade-lang.com/ 使用的是基于空格的语法,有时候多一个或少一个空格就会导致错误结果与预期不同。 Jade 很有用,但有些人觉得它的语法比较脆弱,我设计的语法没有这个问题。

那这个说白了就是 不用空格 用 ()的类 jade 标记格式喽?
//LZ 肯定不是 python 用户
dnartz
2016-02-04 01:01:09 +08:00
不少 JS 的 MVVM 库都在属性里用了竖线“|”啊。。。
StarBrilliant
2016-02-04 01:16:16 +08:00
@wph95
大概 LZ 做的是一个包装成 Lisp 或者 S 表达式 的 Jade ?
实际上 Markdown 发明的目的是,为了让用户在创作文档的时候不关心最终的格式,而只关心文章的大纲结构和语义。比如说 Markdown 原版是没有定义“下划线”的,也没有定义“加粗”和“斜体”的强制要求:你甚至可以让本应斜体的字用仿宋体来显示。
楼主这套东西或许能让 Lisp 用户基于之上开发一个 Lisp 网站框架(地位相当于 Jade 之于 Node.JS ),和 Markdown 的地位是有区别的。
// LZ 肯定不是 Python 用户
// LZ 有往 Lisp 用户发展的潜能
nozama
2016-02-04 01:16:54 +08:00
markdown 的优势是摆脱了 嵌套,因而源文件也有很好的可读性。所以容易编辑、容易传播。
另外给不同元素不同表达形式有利于提高辨识度。

如果一个人真的希望简单地编辑复杂的文本,那他应该用 Office 。
StarBrilliant
2016-02-04 01:24:10 +08:00
@zxgngl
Markdown 插入图片的语法非常多,不仅仅是一种
http://spec.commonmark.org/0.24/#images 这边有一坨。
我觉得最实用的方法是 Example 548 那个,那种语法只需要在图片名字旁边加一个感叹号就可以了,然后图片的 URL 补充在 *整个文档* 的最后面。
链接也可以这么玩。
这样写就让人有种书籍的脚注的感觉,既不干扰阅读,又方便解析。

Markdown 官方的说法是: It ’ s a plain text format for writing structured documents, based on formatting conventions from email and Usenet.
也就是说 Markdown 很多语法是有历史意义的:三十年前人们就这么写邮件的, Markdown 只是提供了一个标准化而已。
msg7086
2016-02-04 05:52:53 +08:00
你 revert 了 Markdown 的设计初衷。
Markdown 不是为了功能强大,而是为了简约。要功能强大,有 ubbcode ,也有直接用 HTML 。
loading
2016-02-04 07:07:02 +08:00
这就是走马观花的结果!
Phariel
2016-02-04 08:43:17 +08:00
总感觉跟 jade 大同小异
newkedison
2016-02-04 08:52:40 +08:00
虽然语法只有一条, 但是关键字却有 N 个, 比如
`(img src=|photo.jpg| width=|60px| height=|40px|)`
里面就有 img, src, width, height 这么多个关键字, 都是不能修改的, 否则 parser 无法解析, 虽然这些关键字和 HTML 是一致的, 但不是每个人都能把 HTML 的关键字都熟练掌握的, 而 Markdown 就没有这么多关键字要记, 只有那么几个*符合直觉*的语法
做个类比, 按 LZ 的说法, 其实 HTML 也只有一种语法就是<XX>OO</XX>
yuriko
2016-02-04 09:03:54 +08:00
我觉得 Markdown 的意义在于能在书写过程中可以忽略板式而专注于内容,所以要做到两点:简约和可读
功能不能复杂,专注于内容的同时不被语法本身打乱思路
可读则保证了即使没有对应的解析处理,生 Markdown 的文本一样能够被有效的直接阅读,即使没有 Markdown 语法知识的人也能理解其中的意思,甚至段落也能保持一致。同时,试想下你在写内容的时候如果自己的文本都看着需要绕圈,怎么专注于内容本身?

私以为,既然设计一个产品,先考虑你的目的是什么,为了解决什么问题,和现有的产品有什么区别?
既然是为了替代 Markdown ,你的确解决了 Markdown 的功能不全的问题,但却抛弃了 Markdown 本身核心的极大特点,从根本上其实还是回到了 XML 类语法的设计上,那这和 XML 比又有什么区别呢……

总的来说,我觉得有种重复早轮子的感觉了
liaowu
2016-02-04 09:19:22 +08:00
真还不如 html 呢、既不专注内容又有一定的学习成本
youxiachai
2016-02-04 09:38:36 +08:00
怎么说呢...
md 插入代码
```
```
你这个

(@code lang=|C++| .

@)

这样的东西跟伟大的 md 相比...没法吐槽啊.
xnotepad
2016-02-04 09:46:34 +08:00
asciidoc 不是更好用,功能强大,还有统一的标准
ibudao
2016-02-04 09:58:53 +08:00
这个语法设计有点意思
zbz
2016-02-04 10:12:15 +08:00
可读性不高呀,其实觉得在 markdown 基础上面多点语法糖就可以了
ferrum
2016-02-04 10:16:22 +08:00
Github 的 markdown 格式有 strikethrough 的。

前段时间, Slack 也支持这个标记,但原版的标准是没有这个格式的。早就有很多人向 John Gruber 建议,希望标准里加入这个标记。

我记得他的回应是,尽可能地让 markdown 像纯文本一样可读,是 markdown 的首要目标。

楼主是否有把官方标准通读数遍呢?
EugeneQiu
2016-02-04 10:28:38 +08:00
不讨论语法,从用户体验来说,每打出括号需要多按一个 Ctrl 键, so
zxgngl
2016-02-04 10:34:28 +08:00
@minsheng

(@@quote .
你这个自定义插件的思路倒是和 Haskell 的 Quasiquotation 差不多了。

总的来看我觉得挺有前途的,特别是那个 (@ @) 比较新颖,我之前自己写是让用户随便换 () [] <> {} 但是如果写自己的文档就会傻逼。
@@)

据说佛印说过,心中有佛,就能容易看到佛。这个新语法显然不是什么佛,但你心中显然有佛。谢谢~
ThomasZ
2016-02-04 10:34:58 +08:00
建议用[] 方便, 另外代码块的格式易读性和书写感觉并不高

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

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

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

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

© 2021 V2EX