当 MarkTex 作为子模块集成到其他项目时,PDF 导出功能需要预编译的 SwiftLaTeX WebAssembly 文件。这些文件体积较大(~3-5MB),不适合提交到 Git 仓库。
-
下载 SwiftLaTeX v15022022 release:
curl -L -o swiftlatex.zip "https://github.com/SwiftLaTeX/SwiftLaTeX/files/8066082/15022022.zip" unzip -o swiftlatex.zip -d swiftlatex-release -
将 WASM 文件复制到项目 public 目录:
cp swiftlatex-release/swiftlatexpdftex.wasm <your-project>/public/swiftlatex/SwiftLaTeX-20022022/pdftex.wasm/ cp swiftlatex-release/swiftlatexdvipdfm.wasm <your-project>/public/swiftlatex/SwiftLaTeX-20022022/dvipdfm.wasm/ cp swiftlatex-release/swiftlatexxetex.wasm <your-project>/public/swiftlatex/SwiftLaTeX-20022022/xetex.wasm/
-
复制引擎 JS 文件:
cp swiftlatex-release/PdfTeXEngine.js <your-project>/public/swiftlatex/SwiftLaTeX-20022022/pdftex.wasm/ cp swiftlatex-release/DvipdfmxEngine.js <your-project>/public/swiftlatex/SwiftLaTeX-20022022/dvipdfm.wasm/ cp swiftlatex-release/XeTeXEngine.js <your-project>/public/swiftlatex/SwiftLaTeX-20022022/xetex.wasm/
如果需要最新版本或自定义构建:
-
安装 Emscripten SDK:
git clone https://github.com/emscripten-core/emsdk.git cd emsdk ./emsdk install latest ./emsdk activate latest source ./emsdk_env.sh
-
编译引擎:
# XeTeX 引擎(推荐,支持中文和 OpenType 字体) cd public/swiftlatex/SwiftLaTeX-20022022/xetex.wasm make # PdfTeX 引擎(仅英文,更轻量) cd public/swiftlatex/SwiftLaTeX-20022022/pdftex.wasm make # Dvipdfmx 引擎(XDV 转 PDF) cd public/swiftlatex/SwiftLaTeX-20022022/dvipdfm.wasm make
集成后,public/swiftlatex/ 目录应包含:
public/swiftlatex/
├── SwiftLaTeX-20022022/
│ ├── pdftex.wasm/
│ │ ├── PdfTeXEngine.js # 引擎加载器
│ │ └── swiftlatexpdftex.wasm # 编译后的 WASM 文件 (~1.8MB)
│ ├── dvipdfm.wasm/
│ │ ├── DvipdfmxEngine.js # 引擎加载器
│ │ └── swiftlatexdvipdfm.wasm # 编译后的 WASM 文件 (~700KB)
│ └── xetex.wasm/
│ ├── XeTeXEngine.js # 引擎加载器
│ └── swiftlatexxetex.wasm # 编译后的 WASM 文件 (~3MB)
└── (其他文件)
启动开发服务器后,检查以下 URL 返回 200 状态码:
http://localhost:5173/swiftlatex/SwiftLaTeX-20022022/pdftex.wasm/swiftlatexpdftex.wasmhttp://localhost:5173/swiftlatex/SwiftLaTeX-20022022/dvipdfm.wasm/swiftlatexdvipdfm.wasmhttp://localhost:5173/swiftlatex/SwiftLaTeX-20022022/xetex.wasm/swiftlatexxetex.wasm
确保 WASM 文件已正确复制到 public/swiftlatex/ 目录,并且 Vite 开发服务器已重启。
控制台显示 "XeTeX 引擎加载失败",但 WASM 文件存在。检查浏览器控制台是否有其他错误信息,可能需要检查网络请求或 CORS 配置。
这是正常的警告,Dvipdfmx 用于将 XeTeX 的 XDV 输出转换为 PDF。如果只需要预览功能,可以忽略此警告。