Skip to content

Latest commit

 

History

History
118 lines (67 loc) · 4.8 KB

README.md

File metadata and controls

118 lines (67 loc) · 4.8 KB

包含AI生成的代码片段

Markdown渲染为HTML支持知乎编辑器上传的脚本

2024年7月起,知乎API无法再请求到登录二维码图片,VSCode-ZhihuWPL-s等插件均无法登录。本仓库利用jks-liu/markdown-it-zhihu-common等包,提供了一种将Markdown渲染为知乎支持的HTML,可供直接在网页版知乎编辑器上传的方式。非规范编程,仅供应急使用。

格式支持继承自markdown-it-zhihu-common,支持公式、Emoji、表格、任务列表、参考文献(知乎注释)、链接卡片。

Markdown语法示例见zhihu-render/test.md,渲染后zhihu-render/test_zhihu.md,效果可见知乎文章。(参考自jks-liu的示例结果

实现相同功能的有drmingdrmer/md2zhihu项目,不过其无法处理知乎脚注(注释)。

安装使用

  • Release版:

去Release页面下载对应平台的二进制程序,直接执行:

zhihu_render test.md
  • 开发版:

需安装node.js环境,下载本仓库,在本仓库根目录下安装依赖:

npm install

运行脚本:

node zhihu_render.js test.md

将会生成HTML格式的test_zhihu.md,可直接在网页版知乎编辑器的“文档导入”中上传。

Warning

本脚本缺点:

  • 知乎编辑器只保留两级标题,其余不可见。
  • 链接卡片中的图片可能不可见,有需要还是在知乎编辑器手动开启链接卡片吧

功能开关

脚本默认支持:

  • 图片保留<img>标签供知乎编辑器上传
  • 公式渲染为知乎支持的<img>(与ZhihuFormulaConvert项目格式一致)

额外功能使用以下参数开启或关闭:

  • --heading-h启用HTML中去除一级标题,其余标题增加一级(h2->h1, h3->h2
  • --noimg不将图片渲染为<img>,改由markdown-it-zhihu-common控制
  • --noeq不将公式渲染为知乎支持的<img>,改由markdown-it-zhihu-common控制
node zhihu_render.js test.md -h --noimg --noeq

VSCode-Zhihu风格为#作为文章标题,其余标题全升一级,本脚本支持这种方式。

知乎编辑器中上传的md不支持本地图片,支持外链但有限制(不支持GitHub图床,支持部分国内网站,支持国外纯IP站),因此可保留md格式图片以供上传。

Note

使用前请确保文档中没有本地图片,图片全改为知乎支持的外链

markdown-zhihu-common渲染成的公式图片似乎并不被知乎支持,因此重写成与ZhihuFormulaConvert项目一致的格式

番外:标题自动编号的工作流

方案一:使用外部脚本给md标题编号

外部脚本添加章节编号,js渲染时标题升一级。可用本仓库包含的Python脚本,pythontools/AddTitleNumber.py(二级起编),另有一级起编的脚本

使用第一个Python脚本:

python number.py test.md
node zhihu_render.js test_withNum.md -h

得到的test_withNum.md,只处理标题,不改动其他内容。

py脚本标题自动编号

运行JS脚本得到test_withNum_zhihu.md,在网页版知乎编辑器中上传即可。

方案二:pandoc标题自动编号

pandoc控制标题升级和加编号,之后交给js脚本渲染

pandoc --wrap=preserve test.md -t markdown-simple_tables-fenced_code_attributes --shift-heading-level-by=-1 -o test_numbered.md --lua-filter=heading-numbering.lua
node zhihu_render.js test_numbered.md

这里利用lua脚本在标题前自动添加编号,如### 小节变成## 1.1 小节(标题先全被提升了一级)

不过pandoc有个严重问题:无法呈现重复脚注,见此14年的issue Markdown footnotes are duplicated · Issue #1603 · jgm/pandoc,至今未修。

原markdown

经pandoc处理后的markdown

最后得到的test_numbered_zhihu.md上传至知乎编辑器。