从vsc支持的md内嵌Latex到博客园支持的内嵌Latex

从vsc支持的正则到博客园支持的正则

问题

在vsc中,如果要在md内嵌Latex公式,单行应该是用小括号包围,多行是中括号;
而在博客园当中则应该使用dollar符,我们可以写一个脚本来进行转化

脚本

import re

def replace(input: str):
    in_patterns = [r"\\\((.*?)\\\)", r"\\\[", r"\\\]", r"((.*?))"] # 最后一个用来特判博客园的情况
    out_patterns = [r"$\g<1>$", r"$$", r"$$", r"( \g<1> )"]
    
    with open(input, 'r') as file:
        lines = file.readlines()
    
    with open(input, 'w') as file:
        for line in lines:
            for i in range(4):
                line = re.sub(in_patterns[i], out_patterns[i], line)
            file.write(line)

if __name__ == "__main__":
    input = "tmp.txt"
    replace(input)

加第四个是因为,如果一个latex表达式被中文括号包围,不加空格隔开的话会渲染错误。

另外,vsc的搜索功能当中,$符号是特殊符号,如果需要字面量需要连打两个或者转义,但是在python的正则表达式当中,$符只是一个普通的字符。

posted @ 2025-02-25 21:00  Gold_stein  阅读(11)  评论(0)    收藏  举报