写文档,最爽的格式就是markdown。
曾经尝试过几款自由开源的markdown编辑器,但都不够理想,不是功能不完善就是缺陷多。
现在我是直接在自己的个人网站上查看最终的显示效果,具体可以看《如何拥有个人域名的网站和邮箱》。
尝试的其中一款编辑器就是KDE的ghostwriter,这个markdown编辑器功能挺完善,但缺陷也不少。
2021年时我解决了一个严重的预览界面显示缺陷Chinese preview in HTML is complete now. Update README.md.。
如果各位朋友想自己修改或增加功能,可以使用github源码安装。
ghostwriter是跨平台的,在Linux、macOS、Windows下都能运行,这里我只介绍Fedora(Linux)下的编译运行,其他平台请参考README.md。
先安装Fedora下编译所需的软件:
sudo dnf install qt-devel qt5-qtbase-devel qt5-qtsvg-devel qt5-qtmultimedia-devel qt5-qtwebengine-devel hunspell-devel qt5-linguist -y
在源码目录下编译:
qmake-qt5
make
# 安装命令可不执行
# make install
运行软件:
cd build/release/
./ghostwriter
这个软件曾经用着感觉还行。
2021年6月刚用ghostwriter时,一个很明显的预览界面显示缺陷摆在我面前: 预览界面中文显示不完整,刚开始想放弃这个软件,但又觉得其他功能挺完善的,最后还是决定自己解决缺陷。
现在把这个缺陷介绍一下,也希望各位朋友能和我一起完善ghostwriter。
导致这个缺陷的commit:
// src/cmarkgfmapi.cpp
- cmark_parser_feed(parser, text.toLatin1().data(), text.length()); + cmark_parser_feed(parser, text.toUtf8().data(), text.length());
定位到这个原因后,我修改成如下代码:
// src/cmarkgfmapi.cpp
cmark_parser_feed(parser, text.toLatin1().data(), text.toLocal8Bit().length());
中文是Unicode编码,一个汉字占2个字节,而QString.length()
一个汉字只当成一个字节,需要修改成QString.toLocal8Bit().length()
。
我的修改方案是Chinese preview in HTML is complete now. Update README.md.,lioneie是我曾经的签名。
你没看错,就是这么容易解决,参与到自由软件就是这么简单,参与到开源软件就是这么简单。