一个优雅的在线 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 联系。