You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Electron+React项目中用md-to-pdf渲染KaTeX公式?

解决md-to-pdf渲染KaTeX公式的问题

要让md-to-pdf正确渲染KaTeX公式,需要给它配置对应的remark/rehype插件,并引入KaTeX的样式文件,具体步骤如下:

1. 确认依赖已安装

确保项目中已安装remark-math、rehype-katex和katex(编辑器已用到相关依赖,若未安装则执行以下命令):

npm install remark-math rehype-katex katex

2. 修改PDF生成代码

调用mdToPdf时添加插件配置与样式注入:

import { mdToPdf } from 'md-to-pdf';
import { writeFileSync, readFileSync } from 'fs';
import { dialog } from 'electron';
import { join } from 'path';
import remarkMath from 'remark-math';
import rehypeKatex from 'rehype-katex';

// 读取KaTeX样式文件内容
const katexCss = readFileSync(join(__dirname, '../node_modules/katex/dist/katex.min.css'), 'utf8');

async function generatePdf(md, mainWindow) {
  let sReq = await dialog.showSaveDialog(mainWindow, {
    title: "Save PDF",
    filters: [{ name: "PDF", extensions: ["pdf"] }]
  });

  if (sReq.canceled) return;

  let pdf = await mdToPdf({
    content: md,
    // 启用数学公式语法识别
    remarkPlugins: [remarkMath],
    // 将数学公式转换为KaTeX渲染后的HTML
    rehypePlugins: [rehypeKatex],
    // 注入KaTeX样式,保证公式排版正确
    css: katexCss
  }).catch(console.error);

  if (pdf) {
    writeFileSync(sReq.filePath!, pdf.content);
  }
}

关键说明

  • remarkMath:识别Markdown中的数学公式语法(如$...$行内公式、$$...$$块级公式)。
  • rehypeKatex:把识别到的数学公式转换为KaTeX渲染后的HTML结构。
  • KaTeX CSS:md-to-pdf生成PDF时依赖该样式渲染公式的排版与外观,缺少样式会导致公式显示为无格式文本或乱码。

内容的提问来源于stack exchange,提问作者clapmemereview

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:43:38