← 返回信息流
AI 资讯Hacker News·2 小时前

Shrimple:更简单更友好的Markdown格式

原标题:Shrimple – A Simpler, Nicer Markdown

速览

Shrimple是一种全新设计的Markdown格式,旨在以更简洁直观的语法降低写作门槛。它保留了Markdown的核心优势,同时优化了视觉效果和易用性。该工具的出现可能为技术文档和内容创作带来更高效的书写体验。

AI 深度解读

背景

Markdown 作为轻量级标记语言,在文档编写、技术博客和 README 文件中广泛应用,但其源码中内联 URL、特殊字符和格式符号往往影响阅读体验。开发者常需在“源文档清晰”和“渲染效果美观”之间权衡。Shrimple 正是在这种背景下诞生——它试图在保持源文档高度可读的同时,生成干净整洁的 HTML,并提供比传统 Markdown 更简洁的语法和更强大的文档组织能力(如静态站点生成、解析/渲染字典等)。

核心内容

Shrimple 是一种更简洁、更干净的 Markdown 替代方案。它的设计目标是:源文档本身看起来干净易读,渲染成 HTML 后同样美观。

安装与使用

需要 Go 编译器先编译:

go build

运行示例(将 README 转换为 HTML):

cat README | ./shrimple -s -w > README.html
  • -s--default-css 为 HTML 输出添加默认 CSS。
  • -w--wrap 将内容包裹成完整的 HTML 文档。
  • 若无 -s-w,则只生成片段,方便嵌入已有网站。
  • 查看全部选项:./shrimple --help

链接与脚注

Shrimple 用脚注机制代替内联 URL,避免源文档被长链接污染。例如,链接由它引用的脚注提供 URL:

这是一个链接 [1]。
...
[1]: https://example.com

普通脚注也可直接使用,带有数字编号的链接会指向脚注区域。

代码块

代码块必须缩进 6 个空格(渲染时会去掉这 6 个空格,但保留后续缩进)。代码块第一行可以以 ### 语言名 开头(可选),该行会为代码块标签添加 HTML class,与 Prism.js 配合可实现正确的高亮。
示例:

      ### Go
      if err != nil {
          return -1
      }
      
      if err == nil {
          return 1
      }

即使两个 if 块之间存在空行,仍被视为同一个代码块。行内代码写法如 `fmt.Println("this is inline code")`

列表

无序列表:每项缩进两个空格,长内容可换行,后续行缩进 4 个空格以对齐首行。

有序列表:缩进同样为两个空格;编号可以任意(如 1、2、3...),渲染时会自动规范为连续编号;后续行对齐首个句点 .

标题

仅支持 h1 和 h2 两种级别,由下划线的“粗细”决定:=== 为 h1,--- 为 h2。下划线行必须至少 3 个字符长(硬性规则),否则上方行不会被视为标题。

笔记(Notes)

笔记以一行全大写的单词开头(无空格),后接任意标点(如 NOTES:)。后续内容缩进 4 个空格。单词(如 SIDENOTEATTENTION)会被小写并用作 HTML 标签的 CSS 类。笔记内可包含空行,但空行必须被同笔记的非空行包围(同样缩进 4 个空格)才会被视为笔记的一部分。

解析与渲染字典(Parse & Render Dictionaries)

这是 Shrimple 最强大的特性之一。用户无需在源文档中插入特殊字符或 HTML,只需定义两个文件:parse_dictrender_dict。然后使用 -p-r 参数指定字典路径,即可让特定单词或短语被自动高亮(如下划线、变绿等)。示例命令:

./shrimple ... -p path/to/parse_dict -r path/to/render_dict

静态网站生成

Shrimple 内置静态站点生成器,适用于文档站点。它会将源目录中的每个 Shrimple 文件转换为 HTML,并输出到另一目录。可通过文件名前的数字控制排序,生成的页面会自动包含菜单和前后导航链接。目录结构示例:

StaticSite
├── 1_Part_One
│   ├── 001_chapter_one
│   ├── 002_chapter_two
│   └── 003_chapter_three
├── 2_Part_Two
│   ├── 001_chapter_four
│   └── 002_chapter_five
├── 3_chapter_six
└── 4_chapter_seven

若文件名与所在目录名相同,则生成 index.html。生成命令:

./shrimple -s -g -n -m examples/StaticSite StaticSite_out
  • -g--generate-site 开启站点生成。
  • -s 添加默认样式(也可用 -c 指定自定义 CSS)。
  • -n 添加前后导航链接。
  • -m 添加嵌套菜单。
  • 所有链接均支持浏览器“文件→打开”直接使用,无需服务器。
  • 增量更新:仅重新生成变更过的文件。

关键要点

  • 源文档可读性优先:核心设计原则是源文档本身看起来就像精心排版的纯文本,无需被内联 URL 或标记符号破坏视觉流畅。
  • 语法极简:只有 h1/h2 两种标题、两种列表、带缩进代码块、脚注式链接、笔记块,无冗余规则。
  • 解析/渲染字典:一种声明式的文本增强机制,无需在源文档中埋入格式标记,即可自动高亮特定词汇。
  • 静态站点生成:支持多级目录、数字排序、自动生成索引和导航,适合技术文档或小册子场景。
  • Go 实现,单文件编译:依赖少,易于部署或集成到 CI/CD 流程。
  • 与 Prism.js 代码高亮兼容:代码块第一行支持 ### 语言名,自动添加 HTML 类以便 Prism 识别。
  • 启发自 Markdown 但简化极端:例如有序列表编号无需统一为“1.”,渲染时会自动规范;链接用脚注而非内联。

意义与影响

Shrimple 的价值不在于取代 Markdown,而在于提供一种更符合“写作者友好”理念的选择。其设计让人联想到 AsciiDoc 或 reStructuredText 对文档结构化能力的追求,但语法上更轻量。核心创新——解析/渲染字典——使得文档中反复出现的术语可以批量统一标记,极大降低维护成本,特别适合技术文档、API 说明或规范书这类需要频繁引用特定概念的场景。静态站点生成器的加入使其成为“一站式文档工具”,无需额外搭配静态站点框架。尽管生态系统尚小(社区、扩展、编辑器支持有限),但其思路值得关注:未来的标记语言或许不再需要用户在“源码清晰”与“功能丰富”之间妥协,Shrimple 正是这一趋势的先行者之一。

查看原文 →qount25.dev