【发布时间】:2017-02-07 10:31:01
【问题描述】:
问题
我一直在使用(Python) Sphinx doc 和CommonMark 解析器来编写包含用reStructuredText 和Markdown 编写的文件的Sphinx 文档。到目前为止一切顺利,效果非常好 (see this line in an example of Sphinx conf.py file)。
然而,CommonMark 对 GitHub 风格的 Markdown (GFM) 的支持并不完美,它缺少的一项重要功能是 emoji。 我搜索了其他 Markdown 解析器,更具体到 GFM,例如 py-gfm,但它们似乎都不支持表情符号。
例如,下面的屏幕截图在左侧显示了 Sphinx 输出,在右侧显示了 GitHub 渲染版本:
所以我的问题是:
- 有谁知道可以在 rST 和/或 Markdown 中添加对类似 GFM 的表情符号的支持的 Sphinx 扩展? (即,像
:boom:这样写的表情符号)。 - 或者我可以用来将任何表情符号(例如
:boom:)转换为小图像的技巧? (因为这就是 GitHub 正在做的事情,例如,参见 the:boom:image)这个技巧可能应该在 Sphinx 创建的 HTML 页面上,而不是在源 Markdown 文件上(我希望它们仍然可以通过 GitHub 文件查看器读取)。
提前致谢。 问候。
2个部分解决方案
部分解决方案是我写的this small Python script,使用carpedm20's emoji 包。 如果可能,它会将任何 :emoji: 别名(写为 :like_this:) 转换为其 UTF-8 版本。
我也试过用pymdownx.emoji包,写this second script。 它将任何 :emoji: 别名转换为一段 HTML 代码,加载一个遥远的 PNG(或 SVG)版本(来自 JsDelivr 的 CDN)。仍然不完美,大小/缩放不好,甚至...中的表情符号都被替换了。 (我会改进)。
两者都可以与这个小型 Bash for 循环一起使用:
BUILDDIR=_build/html # Adapt to the location of your Sphinx output
for i in "$BUILDDIR"/*.html; do
emojize.py "$i" > "$i".new
# or emojize_pngorsvg.py "$i" > "$i".new
wdiff -3 "$i" "$i".new;
mv -vf "$i".new "$i"
done
演示:
- 使用 UTF-8 编码的表情符号:
- 带有表情符号的PNG图像(仍然不完美):
【问题讨论】:
-
问完之后有没有发现什么有趣的事情?仍在寻找 2019 年,但我没有发现任何东西(我也试图避免声明
|substitution|)。 -
嗨@Peque,很遗憾,没有,我没有找到任何新工具(但我没有积极寻找它)。我仍在为 smpybandits.github.io 使用相同的 hack 脚本。
标签: python-sphinx emoji github-flavored-markdown