WP Editor.md 数学公式踩坑总结

发布了一篇数学公式特别多的 Markdown 博文,结果公式渲染在 WP Editor.md 中果然挂了。

经过研究之后发现是 Markdown 渲染和 LaTeX 渲染顺序导致的问题,应该是部分内容首先被 Markdown 引擎渲染,而后再被 LaTeX 渲染的时候就不能正确识别哪些是公式的内容,哪些不是公式的内容了。

单行公式的问题不太严重,使用 KaTeX 代码块的方式将公式内容包裹起来可以保证其内容不被处理,基本是能够正常使用的。

行内公式的情况比较惨烈,首先是 _ 下划线的问题,被下划线包裹的内容会被 <em> 标签包裹导致内容不能被正确识别;其次是 [] 会导致部分格式问题,最后是 \,直接被转义无了。
对于这些内容需要手动增加 \ 使其经过转义后被 LaTeX 处理的时候还是正确的样子。

一个奇怪的情况没有解决,例如公式中出现 < 时,概率会使后面的内容全部无效。暂时没有找到根本原因,发现保证 < 前后没有空格,且 LaTeX 语句写完整,不要因为仅有单个字母就省略 {} 可以不出现这样的问题。

其他问题待填坑……

写了一段 C++ 的代码来处理已知的情况:

#include <cstdio>
#include <iostream>
using namespace std;

int main(){
    freopen("MD.txt", "r", stdin);
    freopen("ANS.txt", "w", stdout);
    char c; bool flag = false;
    int count = 0;
    string ans = "";
    while(scanf("%c", &c) != EOF){
        if (c == '') {
            flag = !flag;
            if (ans.length()>0 && ans.back() == ''){
                ans.pop_back();
                if ((++count) % 2 == 0){
                    ans += "```";
                }else ans += "```katex";
            }else ans += c;
        }else{
            if (flag){
                switch(c){
                    case '_':
                        ans += "\\_";
                        break;
                    case '[':
                        ans += "\\[";
                        break;
                    case ']':
                        ans += "\\]";
                        break;
                    case '\\':
                        ans += "\\\\";
                        break;
                    default:
                        ans += c;
                }
            }else ans += c;
        }
    }
    cout<<ans<<endl;
    return 0;
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇