一个优雅的在线 Markdown 到 LaTeX 转换工具,特别强化了表格处理能力。
npm install
npm run dev
npm run build
构建产物在 dist/ 目录下,可直接部署到任意静态托管平台。
| 列1 | 列2 | 列3 |
|-----|-----|-----|
| A | B | C |
| 1 | 2 | 3 |
自动生成为 tabular 环境。
| 特性 | 详细说明 |
|------|----------|
| 智能处理 | 这是一段很长的文本,会自动触发换行处理,确保不会溢出页面边界 |
自动生成为 tabularx 环境,并计算合适的列宽。
点击右上角"设置"按钮打开配置面板:
src/
├── components/ # React 组件
│ ├── MarkdownEditor.tsx
│ ├── LatexPreview.tsx
│ ├── Toolbar.tsx
│ └── SettingsPanel.tsx
├── services/ # 核心服务
│ ├── latexRenderer.ts # LaTeX 渲染器
│ ├── tableProcessor.ts # 表格智能处理
│ ├── documentGenerator.ts # 文档生成器
│ └── exportService.ts # 导出服务
├── stores/ # 状态管理
│ └── appStore.ts
├── types/ # TypeScript 类型
│ └── index.ts
├── utils/ # 工具函数
│ └── latexEscape.ts
└── App.tsx # 主应用
基于内容长度智能分配列宽
1. 计算每列最长内容的显示宽度(考虑中英文差异)
2. 按比例分配页面可用宽度
3. 应用最小/最大宽度约束
4. 转换为 LaTeX 宽度表达式
行数 > 30 → longtable(支持跨页)
存在长文本 + 列数 ≤ 5 → tabularx(自动分配列宽)
全是短文本 → tabular(简单高效)
# 论文标题
## 摘要
这是一段**重要**的内容。
## 数据对比
| 方法 | 准确率 | 速度 |
|------|--------|------|
| 方法A | 95.2% | 快 |
| 方法B | 96.8% | 中等 |
数学公式:$E = mc^2$
\documentclass[11pt,a4paper]{article}
\usepackage{geometry}
\usepackage[UTF8]{ctex}
\usepackage{booktabs}
\geometry{
left=2.5cm,
right=2.5cm,
top=2.5cm,
bottom=2.5cm
}
\begin{document}
\section{论文标题}
\subsection{摘要}
这是一段\textbf{重要}的内容。
\subsection{数据对比}
\begin{tabular}{l c c}
\toprule
方法 & 准确率 & 速度 \\
\midrule
方法A & 95.2\% & 快 \\
方法B & 96.8\% & 中等 \\
\bottomrule
\end{tabular}
数学公式:$E = mc^2$
\end{document}
本项目已配置自动化部署工作流,推送到 main 分支时自动部署到 GitHub Pages。
部署步骤:
main 分支,自动触发部署Vercel
npm i -g vercel
vercel
Netlify
npm i -g netlify-cli
netlify deploy --prod
Cloudflare Pages
npm run builddistservices/ 目录添加服务逻辑components/ 目录添加 UI 组件types/index.tsApp.tsx仅在需要修改或重新编译 LaTeX 引擎时使用
本项目使用 SwiftLaTeX 的 WebAssembly 引擎(已预编译),普通开发和使用无需以下步骤。
如果需要重新编译 XeTeX 或 PdfTeX 引擎:
安装 Emscripten SDK (emsdk)
# 克隆 emsdk 仓库
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
# 安装最新版本
./emsdk install latest
# 激活环境
./emsdk activate latest
# 设置环境变量
source ./emsdk_env.sh
编译 LaTeX 引擎
# 进入引擎源码目录
cd public/swiftlatex/SwiftLaTeX-20022022/pdftex.wasm
# 或
cd public/swiftlatex/SwiftLaTeX-20022022/xetex.wasm
# 编译
make
生成格式文件(可选)
# 使用项目提供的脚本
./scripts/generate-format.sh
注意:
public/swiftlatex/ 目录| 浏览器 | 最低版本 | 支持状态 |
|---|---|---|
| Chrome | 90+ | ✅ 完全支持 |
| Edge | 90+ | ✅ 完全支持 |
| Firefox | 88+ | ✅ 完全支持 |
| Safari | 14+ | ⚠️ 部分支持 |
注意:
MIT License
欢迎提交 Issue 和 Pull Request!
如有问题或建议,请通过 GitHub Issues 联系。