1943time / inkdown

A WYSIWYG Markdown editor, improve reading and editing experience. and generate your Markdown files into online documents in the easiest and fastest way.
https://www.inkdown.me
GNU Affero General Public License v3.0
861 stars 35 forks source link

自定义markdown渲染规则 #12

Closed shitou333111 closed 6 months ago

shitou333111 commented 6 months ago

很优秀的作品,感谢! 可以自定义markdown渲染的规则吗?比如设定 ::: warning 被渲染为警示条。 我的具体需求是,在bluestone 中markdown,然后发布到vitepress网站上(我想这种需求还是比较普遍)。但现在缺少一些vitepress专属的渲染规则,导致在bluestone中无法预览最终效果(如下图)。最理想的情况是我们提供常用SSG的渲染选项,勾选就可以切换,这样使用不同SSG的用户都可以预览自己最终的网页效果。 或者提供指导,我们可以自己fork,然后加自己的效果,甚至也可以贡献。 image

1943time commented 6 months ago

你好,自定义container是可以添加的,但是青石并没有开发自己的解析器,而是使用了remark,因为他已经很成熟了,但是vitepress使用的解析器是markdown-it,他们对容器解析有一点细微的差别,比如remark 使用:::tip 而markdown-it使用的是::: tip markdown-it中间多一个空格。即使添加自定义容器语法,也不能在vitepress中直接使用,因为他多一个空格。remark的插件编写非常繁琐,而且有不少文档生成器的底层是基于remark而非markdown-it,所以暂时不能为了vitepress去专门适配这种语法

但是如果你想在编辑器中加入 提示或警告类的元素是可以的,只是他输出的markdown元素 不完全适配vitepress的语法。

shitou333111 commented 6 months ago

你好,自定义container是可以添加的,但是青石并没有开发自己的解析器,而是使用了remark,因为他已经很成熟了,但是vitepress使用的解析器是markdown-it,他们对容器解析有一点细微的差别,比如remark 使用:::tip 而markdown-it使用的是::: tip markdown-it中间多一个空格。即使添加自定义容器语法,也不能在vitepress中直接使用,因为他多一个空格。remark的插件编写非常繁琐,而且有不少文档生成器的底层是基于remark而非markdown-it,所以暂时不能为了vitepress去专门适配这种语法

但是如果你想在编辑器中加入 提示或警告类的元素是可以的,只是他输出的markdown元素 不完全适配vitepress的语法。

感谢解释。 现在bluestone书写管理本地markdown已经非常优秀。而且你也开发了分享功能,方便发布到网站。如果向你上面说的那样,分享功能岂不是非常受限。因为大家网站多是使用现有SSG(或许有十几种,稍有不同)。那么有没有考虑怎样能让本地效果和网站效果一致?下面是我的粗浅考虑,或者你有更好的建议:

当然,上面可能背离了项目的主题,但既然有了share这个功能,现在不能很好的利用,非常可惜。

1943time commented 6 months ago

SSG框架都有预编译,在线更改之后应该很难保存回去直接用,其实这种情况使用源码模式比较好,只需要换一种解析器和渲染规则,所见即所得有点限制就在这。SSG框架的预编译就可以让他们引入任何自定义组件和创造更多语法,bluestone直接生成网站是可能的,但他不是静态的,需要搭配一些数据库至少是sqlite,因为他毕竟是一个笔记编辑器,不是生成器,我不太希望文档一旦变更,使用者都得重新编译上传。没有预编译无法引入代码组件是缺陷,只能添加一些更丰富的渲染元素来扩展。如果你对这方面有很多期望与想法,也可以加我微信交流hj0508_geek。

shitou333111 commented 6 months ago

我先去了解相关背景,如果有需要会和你交流。我先关闭这个issue 了。感谢!