我设计了一种文本标记格式,用来代替 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 . 斜体)字。)

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

13641 次点击
所在节点    程序员
144 条回复
10iii
2016-02-05 10:43:35 +08:00
回想起当年在天涯战民科。
zxgngl
2016-02-05 10:44:44 +08:00
@LioMore

> 刚看了其他人的回复,现在觉得楼主的语言和 HTML 的关系越来越像易语言和 VB 的关系了

我想,你想说的是我的语法和 HTML 差不多。但我的语法是可以解决诸如易读性差,入代码可能需要转义等直接使用 HTML 会遇到的问题。

另外,请不要光看其他人的回复。请看我的原帖、我的回复以及补充说明。
zxgngl
2016-02-05 10:46:54 +08:00
@10iii 你这种表达方式是可能伤到人的,而且帮不到人。请看我的原帖、我的回复以及回复中对语法的补充说明。
zxgngl
2016-02-05 10:47:56 +08:00
@cevincheung 看不懂。请说中文。
zxgngl
2016-02-05 10:54:34 +08:00
@jemyzhang

> 看上去楼主并不理解 md 的精华所在,那就是可读性

窃以为, Markdown 就是一些约定俗成的 hack 拼凑,没有什么原则可言,也没有什么精华的。
xcodebuild
2016-02-05 11:44:43 +08:00
@zxgngl 可以说 markdown 存在不少缺陷但也不用贬得一文不值,你的做法确实降低了可读性,写起来也更麻烦了,和 markdown 的受众完全不是一种人来着。
话虽这么说,但是创造总是应该鼓励的,你完全可以用在自己喜欢的地方么,例如给 hexo 写个渲染插件然后用在自己的博客里什么的。
我个人更加喜欢 orgmode (在有 emacs 的情况下),徒手写我还是倾向于 markdown 。
zxgngl
2016-02-05 14:23:43 +08:00
@codefalling 这个语法一开始的定位之一就是博客的“源代码”:)
master13
2016-02-05 14:26:04 +08:00
所以这种语言跟 HTML5 的区别在哪里?
popbones
2016-02-05 15:39:45 +08:00
不太适合人类阅读,容易出现行为一大串)和修饰字符和正文自负不好分辨的情况。可以作为 XML 的某种模板或为了节省空间的存储格式(节省有限)因为表达集基本差不多,但是和 Markdown 比没什么优势, Markdown 的一个重要优势是即时当作纯文本来读对人类来说大部分时候也很容易。如果作为编译成输出文档的源码,不太关心可读性但是比较在意表达能力的话竞争太多,比如 LaTex
zxgngl
2016-02-05 15:55:01 +08:00
@master13

> 所以这种语言跟 HTML5 的区别在哪里?

在 HTML 里面如果想表示 “<你好>” 需要输入转义后的 “&lt;你好&gt;”,使用我设计的语法对于任何字符或字符串都不需要转义,方便拷贝和修改。第二个好处是可以支持第三方格式,如 CSV 表格。第三个好处是写的少,语法一致性高(只有一条语法)。
zxgngl
2016-02-05 16:28:24 +08:00
@popbones

> 不太适合人类阅读,容易出现行为一大串)和修饰字符和正文自负不好分辨的情况。

可以举个具体的行尾出现一大串 ) 的例子吗?

> 可以作为 XML 的某种模板或为了节省空间的存储格式(节省有限)因为表达集基本差不多,但是和 Markdown 比没什么优势, Markdown 的一个重要优势是即时当作纯文本来读对人类来说大部分时候也很容易。

请举个具体的 Markdown 很好读但我设计的格式不好读的例子吧。

> 如果作为编译成输出文档的源码,不太关心可读性但是比较在意表达能力的话竞争太多,比如 LaTex

在功能上,由于我的格式语言只是处在设计阶段,所以跟 LaTex 比功能(如输出 PDF 、 PS ,画数学公式)是望尘莫及的。但在语言设计上 LaTex 等语言有一个致命的问题就是当用 LaTex 写 LaTex 的说明文档的时候会由于转义字符的原因导致非常难写。具体例子:

LaTex 有以下十个特殊字符:

& % $ # _ { } ~ ^ \

如果要在 LaTex 文档中表示它们需要这样写:

\documentclass{article}
\begin{document}
\& \% \$ \# \_ \{ \} \textasciitilde \textasciicircum \textbackslash
\end{document}

我设计的语法包含以下六个特殊字符:

( ) @ = | .

在新语法中表达它们是这样的:

(@article .
(@document .
( ) @ = | .
@)
@)

哪一种语法更清晰简洁比一下立刻就见分晓。
zxgngl
2016-02-05 16:30:46 +08:00
补充上一条回复:

新语法包含七个特殊字符(不是六个):

( ) @ = | . \
heraldboy
2016-02-05 16:56:40 +08:00
太复杂了, markdown 这么简单的都不是很多人用。
MiskoLee
2016-02-05 19:03:52 +08:00
没看到这个和 html 的差异是啥。。。。
zxgngl
2016-02-05 22:13:37 +08:00
@MiskoLee 请看 130 楼的回复。
oska874
2016-02-05 22:28:29 +08:00
不就是模板么。
zxgngl
2016-02-05 22:45:28 +08:00
看来要再秀一下两个特性了:

对插入的代码进行再格式化(局部上色)
http://v2ex.com/t/255292

支持插入 CSV 表格
http://v2ex.com/t/255591
iyangyuan
2016-02-05 22:56:30 +08:00
然并卵,无理论基础
zxgngl
2016-02-05 23:31:21 +08:00
@iyangyuan 请指教,如何才能有理论基础?
hinkal
2016-02-06 09:33:36 +08:00
道理我都懂,为什么回复里只看到了拍砖,并没有看到夸楼主的(img src=|doge.jpg|)

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

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

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

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

© 2021 V2EX