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

关于 hexo 对文章渲染解析{{}}的问题

  •  1
     
  •   niuxuewei · 2018-11-21 22:04:04 +08:00 via iPad · 3717 次点击
    这是一个创建于 1998 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家有没有在用 hexo 的时候遇到在正文中对“{{任何内容}}”解析不正常的问题,我因为经常写数学公式,所以经常会碰到这种问题, 目前唯一的解决办法就是 escape bracket,需要在每一对花括号加{% raw %}这种方式,一旦公式增多一个一个加又太麻烦,大家有什么解决方案? 最近在考虑用 hugo 替换基于 nodejs 的 hexo,但是 hugo 的主题基本上没有想 next 那么完善的,不是缺这个就是少那个…

    第 1 条附言  ·  2018-11-22 09:23:04 +08:00

    产生错误 正确执行:

    第 2 条附言  ·  2018-11-22 13:29:41 +08:00
    问题已经解决,参见#16
    22 条回复    2018-11-23 09:26:58 +08:00
    MonoLogueChi
        1
    MonoLogueChi  
       2018-11-21 22:23:43 +08:00 via Android
    用的什么渲染组件,装了哪些插件,主题用的是什么,这些都用影响到
    niuxuewei
        2
    niuxuewei  
    OP
       2018-11-21 22:39:39 +08:00 via iPhone
    @MonoLogueChi hexo-renderer-pandoc
    这个好像是跟 hexo 有关
    stebest
        3
    stebest  
       2018-11-21 23:02:39 +08:00
    hexo 不是有 mathjax 插件写公式么
    mathzhaoliang
        4
    mathzhaoliang  
       2018-11-21 23:08:55 +08:00
    hexo 默认的 markdown 渲染器是 hexo-renderer-marked,会先按照 markdown 语法解析,然后才是 latex,所以会有冲突。换成 hexo-renderer-pandoc,然后安装 pandoc 就行。
    rabbbit
        5
    rabbbit  
       2018-11-21 23:26:34 +08:00
    试试这个,记得装之前备份,因为要卸掉默认的渲染器
    https://github.com/CHENXCHEN/hexo-renderer-markdown-it-plus
    niuxuewei
        6
    niuxuewei  
    OP
       2018-11-22 06:58:55 +08:00 via iPhone
    @stebest 数学公式没问题 但是遇到这样的$\sqrt{{x^2}+{y^2}}$ 再使用 hexo g 就会出现解析错误 原因是 hexo 会把{{*}}当作变量解析…
    niuxuewei
        7
    niuxuewei  
    OP
       2018-11-22 07:00:24 +08:00 via iPhone
    @mathzhaoliang 冲突问题已经通过 pandoc 解决了 可以参见上一条回复
    niuxuewei
        8
    niuxuewei  
    OP
       2018-11-22 07:06:32 +08:00 via iPhone
    @rabbbit 好滴 我试试
    mathzhaoliang
        9
    mathzhaoliang  
       2018-11-22 08:22:35 +08:00
    @niuxuewei 你是想输出什么?内层的 {} 表示求小数部分吗?
    niuxuewei
        10
    niuxuewei  
    OP
       2018-11-22 09:12:54 +08:00 via iPad
    @mathzhaoliang 我想输出数学公式用 latex 语法 比如 $\sqrt{{x^2}+{y^2}}$ 这是根号下 x 方+y 方 你可以试试把这个代码加在你的正文里 然后用 hexo g 生成就会报错
    niuxuewei
        11
    niuxuewei  
    OP
       2018-11-22 09:16:56 +08:00
    niuxuewei
        12
    niuxuewei  
    OP
       2018-11-22 09:20:14 +08:00
    @mathzhaoliang 如果去掉把{{}}消去 就可以解决这个问题![]( http://res.niuxuewei.com/2018-11-22-011816.png)
    或者加入 escape bracket 类似这样![]( http://res.niuxuewei.com/2018-11-22-011952.png)
    mathzhaoliang
        13
    mathzhaoliang  
       2018-11-22 11:49:34 +08:00
    @niuxuewei 所以不是 hexo 的问题,是你的输入不对。
    FEDT
        14
    FEDT  
       2018-11-22 11:57:02 +08:00 via iPhone
    遇到过。。没想到现在还没解决
    niuxuewei
        15
    niuxuewei  
    OP
       2018-11-22 12:16:45 +08:00 via iPhone
    @FEDT 这应该是 hexo 底层设计问题 想换成 hugo 生态圈太糟糕了 愁人…
    no1xsyzy
        16
    no1xsyzy  
       2018-11-22 13:11:12 +08:00   ❤️ 1
    没接触过,但试试这个?
    $\sqrt{ {x^2}+{y^2} }$
    no1xsyzy
        17
    no1xsyzy  
       2018-11-22 13:12:10 +08:00
    @no1xsyzy
    $\sqrt{ {x^2}+{y^2} }$
    把{{和}}中间加个空格,math 模式下空格是自动忽略的
    niuxuewei
        18
    niuxuewei  
    OP
       2018-11-22 13:22:50 +08:00
    @no1xsyzy 卧槽 真的可行 谢谢!!!!
    niuxuewei
        19
    niuxuewei  
    OP
       2018-11-22 13:27:55 +08:00
    @no1xsyzy 我测试只需要破坏前面的{{就行,后面的}}可以保留,像这样$\sqrt{ {x^2}+{y^2}}$,回头可以写一个 py 脚本自动化解决这个问题
    stebest
        20
    stebest  
       2018-11-22 16:36:51 +08:00
    @niuxuewei 是你装了什么插件吧,我写的没问题
    no1xsyzy
        21
    no1xsyzy  
       2018-11-23 09:12:49 +08:00
    @niuxuewei 因为 codecogs 那个在线渲染的编辑器 \left{ 会自动加空格,而且如果没有空格写 pandoc 的时候 atom 卡 80 列换行会很奇怪,所以习惯了内容复杂的话大括号内侧加空格,很高兴这竟然能帮到你。
    话说我觉得还是两边都加空格好看,对称。
    niuxuewei
        22
    niuxuewei  
    OP
       2018-11-23 09:26:58 +08:00 via iPad
    @no1xsyzy 哈哈哈哈我想的是每次我不加 等到部署的时候用 python 逐个解决
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1273 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 23:59 · PVG 07:59 · LAX 16:59 · JFK 19:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.