markdown-it-pangu

什么是盘古之白?

如果你跟我一样,每次看到网页上的中文字和英文、数字、符号挤在一块,就会坐立难安,忍不住想在它们之间加个空格。

汉学家称这个空白字元为「盘古之白」,因为它劈开了全形字和半形字之间的混沌。另有研究显示,打字的时候不喜欢在中文和英文之间加空格的人,感情路都走得很辛苦,有七成的比例会在 34 岁的时候跟自己不爱的人结婚,而其余三成的人最后只能把遗产留给自己的猫。毕竟爱情跟书写都需要适时地留白。

—— 摘自 pangu.js

在我们输入这样的文字时:

你好World**你好**

你好`World`你好

你好**World**你好

World`World`World

我们实际上需要这个:

你好 World 你好

你好 World 你好

你好 World 你好

World World World

而不是这个:

你好World你好

你好World你好

你好World你好

WorldWorldWorld

pangu.js 正是这样一个工具。但这个 issue 指出它并不能很好地处理 markdown 代码,因此 markdown-it-pangu 也就应运而生。它是 markdown-it 的插件,将为你处理标记语法中麻烦的部分。

如何使用

npm install markdown-it-pangu
# OR
yarn add markdown-it-pangu
const MarkdownIt = require('markdown-it')
const PanguPlugin = require('markdown-it-pangu')

const md = new MarkdownIt().use(PanguPlugin)
md.parse('_当你凝视着_bug,**bug**也凝视着你')
// <em>当你凝视着</em> bug,<strong>bug</strong> 也凝视着你

自定义配置

我们还提供了一些额外的选项,它们可以作为 use 函数的第二个参数传入。

additionalRules

  • 类型: string[]
  • 默认值: ['code_inline']

额外需要特殊处理的规则。此列表中的规则一旦出现在非行首 / 行尾的位置就一定会在两侧生成空格。

如果我不想要空格怎么办?

一般情况下当我们都希望自己的文章漂漂亮亮的,但是如果在某种情况下,我么也可能真的不希望自动生成空格(比如这篇文档开头的反例那里),怎么办呢?我们可以使用 HTML 标签。markdown-it-pangu 会自动忽略 HTML 语法两侧的字段。

输入:

你好World`Hello`World
<span>你好</span>World<code>Hello</code>World

输出:

你好 World Hello World

你好WorldHelloWorld