V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
chingli
V2EX  ›  分享创造

再次介绍 InkMark

  •  
  •   chingli · 2021-08-26 09:12:40 +08:00 · 3296 次点击
    这是一个创建于 1220 天前的主题,其中的信息可能已经有所发展或是发生改变。

    昨天在这里首次发布了我自己设计的 InkMark 轻量级标记语言,但反响并不好。首要原因是我把文档写得太复杂了。的确,我写这个文档主要是为了记录该语言的设计和论证说明,不是给初学者看的,因此别人很难通读,我能理解。

    我昨晚加紧弄了个关于该语言的简要介绍,一并发到这里,再次期待各位的批评。

    请务必从非程序开发人员编写复杂的学术文档的视角,或者以维基百科编辑者的视角,来看待这个语言,而不要只以程序员编写程序说明文档或写简单内容博客的视角来看待。不然的话,这个语言真的会被 Markdown 虐得体无完肤。

    谢谢!

    同时附上两个链接,请先看第一个:

    29 条回复    2021-08-29 10:08:24 +08:00
    ebingtel
        1
    ebingtel  
       2021-08-26 09:27:23 +08:00   ❤️ 1
    我觉得最大的问题:需要特定的解释器……但是大家又都没有解释器,lz 也没提供……有点“屠龙之术”的感觉
    qq73666
        2
    qq73666  
       2021-08-26 09:31:14 +08:00
    挺不错,敢想敢干
    snailya
        3
    snailya  
       2021-08-26 09:36:51 +08:00
    编写学术文档最大的问题是要能转换成学校、期刊要求的格式。编写程序说明文档,又使用不到这么高级的功能。
    Veneris
        4
    Veneris  
       2021-08-26 09:41:23 +08:00
    看完了,还没有具体思考从语法解析方面会不会有冲突之类的。
    但从自动编号章节开始往后,语法就趋于复杂了,至少源代码人类可读性差。
    感觉设计思路大而全,学习成本负担有点大。
    如果只用基本功能的话,感觉还是挺不错的,不知道会不会有人做个解释器试试。
    chingli
        5
    chingli  
    OP
       2021-08-26 09:58:34 +08:00
    @ebingtel 事情总是一步步来,我不能闷着头干,如果大家根本不喜欢这个语法,我写解析器就没有意义了。

    @snailya 是的。InkMark 要通过自身的标记功能,配合外部 CSS 和 JavaScript,实现这些特殊的需求。

    @Veneris 大的方面不会有冲突的。至于比较复杂,我也是没办法,因为复杂问题的解决方案往往比较复杂。我这个自动编号功能是针对 Word 中的题注、交叉引用和索引功能设计的。
    queuey
        6
    queuey  
       2021-08-26 10:06:22 +08:00
    就说一个点,
    Markdown 我可以在纯文本里面去编辑,但是这个估计只能通过解释器了
    另外提供的大多数功能普通人用不上,真用得上的期刊等格式你这个限制又太大了。
    或者可以考虑搞出来卖给金山文档这种文本编辑公司~
    chingli
        7
    chingli  
    OP
       2021-08-26 10:30:28 +08:00
    @queuey 这个……其基础功能……没有那么难吧?我觉得比 Markdown 还简单,就是高级功能有点复杂。
    quanjw
        8
    quanjw  
       2021-08-26 10:36:52 +08:00
    支持,但我还是选择 markdown 。
    learningman
        9
    learningman  
       2021-08-26 11:01:34 +08:00 via Android
    markdown 最大的优点就是足够简单,生成的东西能看。大家就不用操心排版,安心写内容。
    实在需要复杂了,md 是可以内联 html 的
    easychen
        10
    easychen  
       2021-08-26 11:19:10 +08:00
    感觉楼主的需求其实是在学术领域 Markdown 不够用的问题。看了下简版的列表,除了图片自动编号,其他都已经都是常规扩展了。这完全可以扩展 Markdown 语法来完成,没有必要另起炉灶吧

    另外元素的属性和样式其实直接通过 Markdow extra 规范( https://michelf.ca/projects/php-markdown/extra/ )搞定,有现成的 PHP/JS 库可以支持。

    前段时间我正好做了一个视频方向的 Markdown 扩展语法,或许楼主可以参考下 http://doc.windmark.top/cn/06-styles.html#windmark%E6%89%A9%E5%B1%95%E6%A0%87%E8%AE%B0
    chingli
        11
    chingli  
    OP
       2021-08-26 11:22:24 +08:00
    @learningman 嗯嗯,程序员用 Markdown 肯定是很不错了。但在学术文档中,即便内联 HTML,也是不够用的。主要是自动编号、交叉引用、索引那一套不够用;另外内联 HTML,毕竟还是有点不好看,对普通人学习成本有点高了。
    bailitusu
        12
    bailitusu  
       2021-08-26 11:33:22 +08:00
    工作中继续要写文档( markdown )又需要写论文( latex ),从我的角度来说,InkMark 像是结合了 markdown 和 latex 二者的一些 feature 进行的再创作。在易用性上不如 markdown,功能上又不如 latex,于我而言没有太大的吸引力。但还是很佩服作者能够一个人把这件事情做完和做好的勇气和毅力。
    cmdOptionKana
        13
    cmdOptionKana  
       2021-08-26 11:35:50 +08:00
    @chingli 建议在宣传上完全撇清与 markdown 的竞争,甚至可以考虑在设计上放弃区分基础功能和高级功能,因为基础功能拿出来说必然会输给已经普及的 markdown 。

    目标用户(至少是初期)是嫌 markdown 太简单,又嫌 LaTex 太复杂的人,这些人在哪里,恐怕不容易找出来。

    markdown 的初期用户是程序员,LaTex 的初期用户是需要写学术论文或书籍排版的人。那么,InkMark 的初期用户是什么人?
    chingli
        14
    chingli  
    OP
       2021-08-26 11:54:15 +08:00
    @easychen 看了这个 PHP Markdown Extra,它定义属性的方法跟 InkMark 差不多。我觉得它还是存在如下问题:

    * 为了扩展功能,它还是使用 Markdown 和 HTML 混排,这时 InkMark 设计时力求避免的。
    * 在 Markdown 中嵌套 HTML 块级元素时,其用空格缩进的规则还是挺增加心智负担的。
    * 为了在 HTML 块级元素内包含其他 Markdown 元素,用 `<div markdown="1"> </div>` 的形式的 HTML 块级元素一点也不优雅;同样,为了在 HTML 表格单元格内包含 Markdown 块级元素,用 `<td markdown="block"> </td>` 形式定义单元格也不优雅。
    * 它无法为所有 Markdown 元素指定属性。

    我觉得把 Markdown 搞复杂了,就会变成一个大杂烩。
    chingli
        15
    chingli  
    OP
       2021-08-26 11:59:37 +08:00
    @bailitusu @cmdOptionKana 至于会不会有人用,我也不知道。可是,如果解决 LaTeX 过难的问题,且做到内容和样式分离,功能上配合 CSS 、JavaScript 也不输太多,还方便在网页中呈现,为什么就没有前途呢?

    ——当然,我自己不一定能把这个事情做好。我发在这里是为了争取支持的。
    icyalala
        16
    icyalala  
       2021-08-26 12:20:28 +08:00
    Markdown 的设计目的是 "易读写的纯文本,需要时可以转为 HTML"。它的目的不是为了"精确排版"。
    LaTeX 目的是 "精确排版",它的目的不是为了"可读性"。

    楼主的 InkMark 设计目的是什么,有没有这种一句话的描述呢?
    chingli
        17
    chingli  
    OP
       2021-08-26 12:27:06 +08:00
    @icyalala 哎呀,我在第二个文档中用了长长的一段话描述,写得有点啰嗦了,看了应该将它缩减矿一句话更好。先把这段话放上来吧:

    “为了能在浏览器中轻松编写并正确地展示格式复杂的学术内容,我们需要做一些折中。即不完全依赖所见即所得的 HTML 编辑器,而是让用户以纯文本的形式输入内容,纯文本中包含一些简单的标记,用于标示文档的各种元素及其属性,之后通过编译过程将这些被标记的文本转化为网页内容( HTML 格式的文本)。当然,这些标记规则要容易记忆、便于输入、可读性好。基于最新的 Web 技术,这些标记文本被编译后生成的网页看起来完全可以像正规的出版物一样,甚至在交互性操作、多种尺寸屏幕上的自动调整版式显示还优于以往常用的便携式文档格式( PDF 格式)或 MicroSoft Office Word 文档。”
    nowgoo
        18
    nowgoo  
       2021-08-26 12:43:51 +08:00
    建议改个名字: https://www.w3.org/TR/InkML/
    bailitusu
        19
    bailitusu  
       2021-08-26 13:07:13 +08:00
    @chingli 如果目的是“能在浏览器中轻松编写并正确地展示格式复杂的学术内容”,我有些疑问。

    1. InkMark 好像没有考虑排版风格。学术内容必然有发表和出版的需求,各大期刊 /会议都有各自的排版风格需求,因此会提供各自的 latex 的模板。对于 latex 来说,在不同的模板之前进行风格转换十分方便,这也是 latex 的重要特性之一。所以 InkMark 很难满足投稿的需求。

    2. 如果只是简单地希望展示学术内容,直接在网页中嵌入 latex 编译后的 pdf 文件是不是更为方便。

    3. 目前已经有将 latex 文档转换为网页展示的[实例]( https://ieeexplore.ieee.org/document/9089867),鉴于 latex 在学术写作中的必要性,我认为这是一个更好的“展示格式复杂的学术内容”解决方案。
    easychen
        20
    easychen  
       2021-08-26 13:42:14 +08:00
    @chingli 我也不喜欢 HTML 混入,所以直接把 HTML 相关全部禁用了,只保留了属性定义。所以除了「无法为所有 Markdown 元素指定属性」其他的都不是问题。另外这个规范也有 JS 实现。

    @bailitusu 直接在网页中嵌入 latex 其实并不需要那么复杂,直接用 JS 库就可以的。https://latex.js.org/
    chingli
        21
    chingli  
    OP
       2021-08-26 13:49:41 +08:00
    @nowgoo 的确,需要改!

    @bailitusu 1. 不应该考虑排版风格的,所有轻量级标记语言都是内容和样式分离的,只要支持文档中的各种要素,应用不同的 CSS 就有不同的样式。

    2. 在网页中嵌入 pdf 不方便啊,比如就不方便响应式排版,在手机上看就很不方便。

    3. 你举的这个例子排版效果很差啊,跟维基百科这种用简单标记语言生成的页面差距很大。LaTeX 那么难,长远来说,为什么一定要用它呢?

    当然,想要 InkMark 适应学术论文出版的需求,还需要做些扩充,如为文档添加元数据,这些都是比较容易实现的。
    chingli
        22
    chingli  
    OP
       2021-08-26 13:56:44 +08:00
    @easychen 在 Markdown 中禁用了 HTML,剩下的功能对学术表达就不够用了,甚至连简单的上下标都需要借助嵌入 LaTeX 公式实现,实在是有点麻烦。
    xinyana
        23
    xinyana  
       2021-08-26 14:16:33 +08:00
    介绍很简洁,看懂了,不太合适我 md 足够好
    yafoo
        24
    yafoo  
       2021-08-26 21:51:34 +08:00 via Android
    博客风格不错,收藏了
    chingli
        25
    chingli  
    OP
       2021-08-26 22:59:44 +08:00
    @yafoo 自己基于 Hugo 设计的一个非常轻量级的主题,css 文件就一个,在 gzip 压缩前才 19kb,不过我还不太精通 Hugo 主题发布的全套流程,所以没有开源。
    pluvet
        26
    pluvet  
       2021-08-27 01:05:51 +08:00
    写个 parser 倒是挺简单的。希望能基于 Markdown 扩展吧,便于推广而且语法简单。lz 的想法很有意思,可以交流交流,一起写个解析器。
    chingli
        27
    chingli  
    OP
       2021-08-27 09:18:13 +08:00
    @pluvet 这个和 Markdown 差别太大,没办法兼容啊。
    zhw2590582
        28
    zhw2590582  
       2021-08-27 14:50:19 +08:00
    感觉工程量挺大,楼主辛苦了
    chingli
        29
    chingli  
    OP
       2021-08-29 10:08:24 +08:00
    各位的意见对我帮助还是挺大的,我准备再如下几方面改进:

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

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

    谢谢各位!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2755 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:45 · PVG 17:45 · LAX 01:45 · JFK 04:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.