V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
chizuo
V2EX  ›  程序员

有无和 typora 一模一样 markdown 渲染规则的博客系统?对于 LaTex 部分不能妥协!

  •  
  •   chizuo · 2020-11-16 18:13:44 +08:00 · 4757 次点击
    这是一个创建于 1453 天前的主题,其中的信息可能已经有所发展或是发生改变。

    被整疯了,因为我写 blog 使用 typora 来编写,相关的 LaTex 公式都按照 typora 的显示去编写,挺满意的。

    我的博客系统使用 hugo academic,一个很简洁的博客,但是当我使用 hugo 进行渲染时,灾难出现了,数学公式效果和 typora 相差甚远,很多规则不一致

    1. 尝试了引入最新的 mathjax,无效
    2. 尝试了引入最新的 katex,无效
    3. 尝试手动导出 html,ok,但是当用 hugo 再渲染时会被覆盖;将原 markdown 文件设置为 draft=true 避免覆盖后,又不会在主页目录显示;总之就是妥协的后果就是非常麻烦;

    typora 本身没有方便的 command line 导出支持,所以大家伙有无满足要求的解决方案或博客系统推荐呢?干脆换一套博客系统

    1. 尽量和 typora 的 markdown 规则一致,尤其是 LaTex 部分
    2. 简洁!方便发布与管理

    谢谢大家!

    第 1 条附言  ·  2020-11-18 13:11:20 +08:00
    @gwy15
    放弃了,markdown 要想和 latex 配合像 typora 那样,需要魔改的地方太多了。
    hugo+iloveit 主题+katex 也是各种各样的 bug,由于 markdown 渲染造成的转义问题,导致没有什么优雅的方式能够处理与 latex 的关系。比如
    1. aligend 环境中换行需要使用\\\\( 4 个换行符)
    2. inline math 时常和 markdown 加粗功能冲突**bold here**,导致无法展示加粗
    3. 在 markdown 缩进环境下无法 render,例如
    ```
    1. $\mathbb{E}[\mu_{ML}]$ is obviously unbiased
    $$
    \mathbb{E}[\mu_{ML}] = \mathbb{E}{[\frac{1}{N}\sum_{n=1}^{N}x_n]}=\frac{N}{N}\mathbb{E}[x] = \mu
    $$

    Where $w_1 + w_{2}^{2}$, r **function** is known as **ridge regression**.
    ```
    以上代码渲染出来的结果如下图,render 失败
    https://imgur.com/Rh13zRS

    注意我的 latex 或者 markdown 代码可能不规范,但我的主题目的是“寻求和 typora 一致的渲染规则的 html blog”。
    这进而引发了一个问题,markdown 各种各样的渲染是分裂的,没有统一的强制的语法 /规则要求,typora 闭源,垄断了大部分 markdown 编辑器市场,然而却不提供相关的 cli 工具,或者不公布渲染源代码

    由于我对前端并不熟悉,无能力,自己 hook 任何 blog 系统或者 tex.js 的源代码

    截至目前,我还没有测试 typecho 博客系统(虽然不抱有什么希望 233

    @no1xsyzy
    我为什么不使用 pandoc,
    1. 想要找出和 typora 一致的渲染配置,很难(并非默认的 pandoc 导出配置就能开箱即用)
    2. 不是完整的 blog 系统,意味着我还需要自己完善一个博客的其他东西;仅仅为此放弃 hugo,代价太大
    3. 我对前端一无所知

    还是非常感谢各位的帮助!
    第 2 条附言  ·  2020-11-18 21:54:51 +08:00

    @mrgeneral @Elissa 最后一次append,终于弄好了typecho,安装了插件typecho-markdown插件,依然无法很好地支持typora支持的格式。如下图

    Imgur

    34 条回复    2020-11-19 18:06:52 +08:00
    xiebruce
        1
    xiebruce  
       2020-11-16 18:19:33 +08:00
    wordpress,装插件就可以
    chizuo
        2
    chizuo  
    OP
       2020-11-16 18:27:52 +08:00
    @xiebruce 谢谢老哥,有推荐的主题吗?没有用过 wordpress,,貌似还需要配置 php ?
    kidlj
        3
    kidlj  
       2020-11-16 18:53:12 +08:00
    如果要换系统的话,参考一下我 GitHub Pages 的 Mathjax 配置[1],VS Code 用 Markdown Preview Enhanced"[2] 插件预览和发布后的效果一致。

    [1]: https://github.com/kidlj/site/commit/91bb645ed81fd7dfb0444b0e11dd8b633bd552c1
    [2]: https://marketplace.visualstudio.com/items?itemName=shd101wyy.markdown-preview-enhanced
    gwy15
        4
    gwy15  
       2020-11-16 19:09:42 +08:00
    gwy15
        5
    gwy15  
       2020-11-16 19:10:52 +08:00
    ps. 我的博客也是 typora 写的,通过坚果云同步来发布博客。你可以尝试下改下 hugo 代码或者引入 katex 之后手动调用 api 渲染
    PureWhiteWu
        6
    PureWhiteWu  
       2020-11-16 19:15:14 +08:00
    试试看 hexo + next theme ?
    chizuo
        7
    chizuo  
    OP
       2020-11-16 21:13:50 +08:00
    @kidlj
    @gwy15
    谢谢老哥!!再次尝试了 mathjax 以及 katex 和一些配置还是无效。

    这个无效指一些可能不太规范的 markdown 下的 latex 语法,特别是在 indent 环境下再次使用$$latex$$
    例如以下这段 markdown 代码

    ```
    balabala something...

    1. $\mathbb{E}[\sigma_{ML}^{2}]$ is biased
    $$ \begin{align}
    \mathbb{E}[\sigma_{ML}^{2}] &= \mathbb{E}[\frac{1}{N}\sum_{n=1}^{N}(x_n - \mu_{ML})^2] \
    &= \frac{1}{N}\mathbb{E}[ \sum(x_n^2 + \mu_{ML}^2 - 2x_n\mu_{ML}) ] \
    &= \frac{1}{N}\mathbb{E}[ \sum{x_n^2} + N\mu_{ML}^2 - 2N\mu_{ML}^2 ] \
    &= \frac{N}{N}\mathbb{E}[x^2] - \mathbb{E}[{\mu_{ML}^2}] \quad \mathbb{E}[x_n] \equiv \mathbb{E} \text{
    beacause the variable } x_n \text{ obey Gaussian distribution } \mathcal{N}(x|\mu, \sigma^2) \
    &= \mathbb{E}[x^2] - \mathbb{E}[\mu_{ML}^2] \
    &= (\mu^2 + \sigma^2) - (\mu^2 + \sigma_{\mu_{ML}}^2) \
    &= \sigma^2 - \sigma_{\mu_{ML}}^2 \end{align} $$ the $\sigma_{\mu_{ML}}^2$ denotes the variance of
    $\mu_{ML}$ $$ \begin{align} {\rm var}[\mu_{ML}] = \sigma_{\mu_{ML}}^2 &= {\rm var}[\frac{1}
    {N}\sum_{n=1}^{N}x_n] \
    &= \frac{1}{N^2}{\rm var}[\sum_{n=1}^{N}x_n] \
    &= \frac{1}{N^2}N{\rm var} \
    &= \frac{1}{N}\sigma^2
    \end{align}
    $$

    2. balabala

    ```

    可能是这些本都不是正确的 markdown 规则,被 typora“惯坏了”
    chizuo
        8
    chizuo  
    OP
       2020-11-16 21:16:51 +08:00
    尝试了几番,都不太行,准备写个脚本添加一个“avoid overlap”名单,在 hugo 选然后,再次将“typora”导出的 html 进行替换,,真的是没办法 2333,,涉及的数学公式太多了
    gwy15
        9
    gwy15  
       2020-11-16 21:38:04 +08:00
    我试了下我的博客,是可以显示的:
    https://imgchr.com/i/DEEN5D

    不过得把 align 环境换成 aligned,KaTeX 不支持前者。
    noqwerty
        10
    noqwerty  
       2020-11-16 22:16:22 +08:00 via Android
    会不会是反斜杠的问题? Hugo 会先用 Markdown 引擎处理一轮,所以 _,\等符号可能 katex 或 mathjax 无法解析到了。我遇到的问题是_{}这种一般要改成\_{},换行一般要从双\变成四个\
    Elissa
        11
    Elissa  
       2020-11-16 22:41:45 +08:00
    typecho+插件就可以了,效果可以看我的文章
    https://www.makedream.site/index.php/archives/58/
    mrgeneral
        12
    mrgeneral  
       2020-11-16 22:51:19 +08:00
    我用的这个 Typecho Markdown 插件,就是 typora 写完直接复制粘贴到博客的,还支持 mermaid 。

    [Markdown Plugin for Typecho]( https://github.com/mrgeneralgoo/typecho-markdown)

    [效果示例]( https://www.chengxiaobai.cn/record/markdown-concise-grammar-manual.html)
    revalue
        13
    revalue  
       2020-11-16 23:38:58 +08:00
    @mrgeneral 强到哭 博客好看
    hsfzxjy
        14
    hsfzxjy  
       2020-11-17 00:54:23 +08:00 via Android
    我用 hexo 搭博客,开始也是发现 latex 非常蛋疼…markdown 中的特殊符号要再次转义。个人解决办法是魔改了一下 markdown 的引擎,优先解析$$中的内容,写起来就方便多了。
    https://github.com/hsfzxjy/kramed
    metaquant
        15
    metaquant  
       2020-11-17 10:28:35 +08:00
    我直接把一款 typora 主题改成了博客主题,然后用的 pelican 生成,可以做到在 typora 里写文章的效果和网页上最终显示效果一致,可以看看效果:

    https://pe.metaquant.org/pe021.html
    abersheeran
        16
    abersheeran  
       2020-11-17 12:31:01 +08:00
    最简单的方法就是直接把写好的内容导出成 html
    no1xsyzy
        17
    no1xsyzy  
       2020-11-17 14:01:31 +08:00
    (没用过 typora 随便推荐一下 pandoc
    ……然后一看,typora 一些高级功能就是基于 pandoc 的? https://support.typora.io/Install-and-Use-Pandoc/
    那直接 pandoc 导出到 mathjax 不就行了么?
    no1xsyzy
        18
    no1xsyzy  
       2020-11-17 14:10:08 +08:00
    话说得有点瘸了
    应该说,直接用 pandoc 去做 template 渲染 HTML 就行,看上面多半是 hugo 和 latex 语法兼容性的问题
    但 pandoc 能完成的事为什么还要新加个东西去完成?
    参考 pandoc 文档 pandoc.org/MANUAL.html
    gkirito
        19
    gkirito  
       2020-11-17 14:14:22 +08:00
    cweijan
        20
    cweijan  
       2020-11-17 17:46:03 +08:00
    cweijan
        21
    cweijan  
       2020-11-17 17:46:57 +08:00
    我看错问题了, 请无视我的回复
    chizuo
        22
    chizuo  
    OP
       2020-11-17 21:32:05 +08:00
    @gwy15 好的谢谢老哥,确实 KaTex 感觉还不错,但是有一个问题就是 inline math 好像$math$这样没法渲染?网上查了不少资料,改 renderMathInElement 也渲染不了,用\(math\)这样是可以的,请教下老哥怎么解决的?
    chizuo
        23
    chizuo  
    OP
       2020-11-17 21:33:53 +08:00
    @no1xsyzy emmm,主要是我的博客系统用的是 hugo,也就是说它会将.md 渲染成一些带样式的 html,所以如果全部使用 pandoc 之类的工具,将.md 统统直接转为 html,那 hugo 博客系统就废了,一些导航、目录都无法自动生成(这些都依赖于让 hugo 去渲染 md )
    chizuo
        24
    chizuo  
    OP
       2020-11-17 21:35:02 +08:00
    @Elissa
    @mrgeneral
    好的谢谢,等下我试试这个 Typecho 博客系统
    chizuo
        25
    chizuo  
    OP
       2020-11-17 21:44:41 +08:00
    @gkirito 看起来不错的样子,虽然样式对我来说还是有点太复杂了( 2333 我用于个人学术页展示,一般都很朴素很朴素那种),它用了 KaTex 来渲染,但是我在评论系统看到它支持 markdown,测试了下,没渲染。。正文貌似没看到它 latex 的示例,还需要自行测试一下。

    感谢老哥!
    gwy15
        26
    gwy15  
       2020-11-17 23:01:25 +08:00
    @chizuo 调用的时候可以传参数进去,你查下文档,把 delimiters 里面添加 $ 就可以了,默认是不添加的
    no1xsyzy
        27
    no1xsyzy  
       2020-11-18 02:34:09 +08:00
    @chizuo 你的提问是 > 有无和 typora 一模一样 markdown 渲染规则的博客系统?
    我的回答是抛弃 Hugo,用 pandoc 和一点 Bash 甚至 Makefile 解决这个问题。
    反正 typora 说了自己高级核心是 pandoc,那兼容性自然有“官方保证”
    Elissa
        28
    Elissa  
       2020-11-18 23:31:57 +08:00
    Elissa
        29
    Elissa  
       2020-11-18 23:33:35 +08:00
    @chizuo typecho 本身支持 markdown 的,插件只是单独支持 Katex 公式显示
    chizuo
        30
    chizuo  
    OP
       2020-11-19 10:29:23 +08:00
    @Elissa 嗯嗯,我第二个 append,是测试了安装了“MarkdownParse”这个 latex 增强插件后的结论。我刚刚再次测试了你说的“MarkdownKatex”,效果还不如“MarkdownParse”;尝试 2 个插件同时开启,直接 http error500
    Elissa
        31
    Elissa  
       2020-11-19 14:03:33 +08:00 via Android
    @chizuo 我去粘贴文章的时候公式处修改用$包裹就可以了,其它都是 markdown 通用语法,两个插件应该都会对公式解析,php 后端产生错误肯定 500
    Elissa
        32
    Elissa  
       2020-11-19 14:07:56 +08:00 via Android
    chizuo
        33
    chizuo  
    OP
       2020-11-19 15:08:59 +08:00
    @Elissa 主要是我的 markdown 和 latex 规则都是 typora 允许的,因此比较复杂情况,typora 可以支持,你说的这两个插件无法支持。这就比较尴尬了,typora 又不把它的渲染规则公开,难受
    xiebruce
        34
    xiebruce  
       2020-11-19 18:06:52 +08:00
    @chizuo 对,如果你不会装环境就算了,以后有的是麻烦
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2850 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 02:27 · PVG 10:27 · LAX 18:27 · JFK 21:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.