wordpress+markdown+latex一个解决方式
利用寒假时间租了台服务器,搭建了LAMP环境,用wordpress建设了第一个自己的个人网站。
遇到的问题
markdown支持不强
但在发布文章的时候遇到了很多问题,由于wordpress对markdown的支持不够,在本地写的markdown文件没办法直接像CSDN一样上传到博客,于是乎我采用插件的方式来解决这个问题。
数学公式不支持
但随之新的问题又出现了:插件对于数学公式的支持不够,对于markdown原生的$$....$$
和$....$
并不支持,还需要将他们写成[latex].....[\latex]
的形式,这样就很不方便写作
解决方式
随后尝试了各种插件,总是会遇到一些bug,导致公式显示不正常或页面崩溃,最后不得不放弃markdown插件,换另一种思路重新去看待这个问题:
- 将markdown文件的编辑转到本地,这样既可以防止由于服务器不稳定,文本丢失,也可以使用更得心应手的编辑器(于我而言是typora)
- 继续使用MathJax-LaTeX,但通过阅读说明,不难发现MathJax-LaTeX也是需要使用
[latex].....[\latex]
形式的公式 - 于是就可以在本地利用python脚本正则表达式去匹配markdown文件,将所有的
$....$
替换为[latex].....[\latex]
;同时在文件开头添加[mathjax]
实现对$$.....$$
的支持 - 最后,将生成的经过修改的文件复制HTML源码(typora中
CTRL
+
A
全选所有字符,编辑
复制为HTML代码
),将HTML源码粘贴到wordpress原生编辑器代码编辑区(发布右侧的三个竖点->
代码编辑器),即可完成全部操作!
文件下载
文件由本人亲自用pyinstaller
打包,请放心使用!
在本机测试未发现问题,若出现特殊情况,本人一概不负责任!我先叠个甲
使用方式
将你的md文件拖到convert_1.exe
中即可执行,会在源md文件路径下生成一个名为output_源文件
的输出文件
源代码
最后在文末附上源代码,技术力比较低,见谅!
# -*- coding:utf-8 -*-
import os
import sys
import re
import time
import argparse
def convert(file_path, file_name):
input_file_path = file_path
input_file_name = file_name
output_file_path = os.path.dirname(file_path) + "\\output_" + file_name
output_file_name = "\\output_" + file_name
try:
with open(input_file_path, 'r', encoding='utf8') as fr, open(output_file_path, 'w', encoding='utf8') as fw:
fw.write("[mathjax]\n")
data = fr.read()
pattern1 = r'(?<!\$)\$([^\$]+?)\$(?!\$)'
data = re.sub(pattern1, lambda x:'[latex]' + re.split('\$',x.group(0))[1] + '[/latex]', data)
fw.write(data)
time.sleep(0.5)
print('Sucess!')
except FileNotFoundError as e:
print(e)
if __name__ == '__main__':
file_path = sys.argv[1]
print("文件路径", file_path)
file_name = os.path.basename(file_path)
print("文件名", file_name)
convert(file_path, file_name)
# print
本文的思路灵感来源于WordPress后台缓慢以及Latex公式乱码的问题-腾讯云开发者社区-腾讯云 (tencent.com)