工具链接🔗
详情请见 对于论坛公式的使用说明
由于一些用户对于 HTML 代码的使用并不熟悉,所以在这里进行部分补充说明。
HTML代码实现
代码:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Markdown 公式转换</title>
<style>
textarea { width: 100%; height: 200px; }
button { margin: 10px 0; }
</style>
</head>
<body>
<h2>Markdown 公式转换工具</h2>
<textarea id="input" placeholder="粘贴 Markdown 文本..."></textarea>
<button onclick="convert()">转换</button>
<textarea id="output" placeholder="转换后的文本..." readonly></textarea>
<script>
function convert() {
let text = document.getElementById("input").value;
text = text.replace(/\$\$(.*?)\$\$/gs, "[math]$1[/math]");
text = text.replace(/\$(.*?)\$/gs, "[imath]$1[/imath]");
document.getElementById("output").value = text;
}
</script>
</body>
</html>
使用教程
创建 HTML 文件:使用任意文本编辑器,如 Windows 系统中的记事本、Notepad++,Mac 系统中的 TextEdit 等。在文件夹中右键,选择新建文本,将代码复制粘贴到文本编辑器中,然后将文件保存为以.html为后缀的文件,例如markdown_converter.html
。
打开文件:打开浏览器,在浏览器中选择 “文件” 菜单,然后选择 “打开文件”(不同浏览器的具体选项可能不同)。在弹出的文件对话框中,找到刚才保存的markdown_converter.html文件,选中并单击 “打开” 按钮。也可尝试直接双击文件,选择打开方式为目标浏览器。
使用工具:浏览器会加载并解析该 HTML 文件,将其呈现为一个网页。在网页的文本输入框中粘贴包含 Markdown 公式的文本,然后点击 “转换” 按钮,即可在下方的文本框中看到转换后的结果。
C++代码实现
若 HTML 代码因某些特殊情况而无法使用,也可以使用将下面的代码复制到c++编译器进行转换。
代码:
// 请确定编译器版本在 C++11 或更高版本
#include <iostream>
#include <string>
#include <regex>
#include <fstream>
using namespace std;
string convert_formulas(const string& input) {
string output = input;
regex block_pattern(R"(\$\$([\s\S]*?)\$\$)");
output = regex_replace(output, block_pattern, "[math]$1[/math]");
regex inline_pattern(R"(\$((?:[^$]|\\\$)+?)\$)");
output = regex_replace(output, inline_pattern, "[imath]$1[/imath]");
return output;
}
int main(int argc, char* argv[]) {
string input;
if (argc > 1) {
ifstream fin(argv[1]);
input = string(istreambuf_iterator<char>(fin),
istreambuf_iterator<char>());
} else {
cerr << "粘贴 Markdown 文本 (输入完毕后请回车并按ctrl+z):\n";
input = string(istreambuf_iterator<char>(cin),
istreambuf_iterator<char>());
}
string output = convert_formulas(input);
cerr << "转换后的文本:\n";
if (argc > 2) {
ofstream fout(argv[2]);
fout << output;
} else {
cout << output;
}
return 0;
}
(其他语言由于笔者能力原因,暂时无法给出)