Mathpix

中文公式识别:\text包裹与字体处理

更新于

中文公式识别之后,要做的一件事是把公式里的汉字统一用 \text{…} 包起来。本站编辑器里直接写汉字也能显示,看不出问题;可一旦把这条公式放进 ctexart 文档用 XeLaTeX 编译,没包的汉字和写在 \mathrm{…} 里的汉字都会整个消失,只有 \text 包着的留得住。导出到 Word 时,公式里的中文统一用宋体,没有单独的中文字体选项。

识别结果里的中文长什么样

物理、化学和经济类公式常带中文,比如机械效率的下标「有用」「总」,化学方程式上方的「点燃」「高温」,经济学里的「成本」「利润」。这类公式识别出来,汉字可能有几种写法:包在 \text{…} 里、直接写在公式里,或者包在 \mathrm{…} 里。三种在本站编辑器里都不报错。

规范的写法是用 \text 包裹:

\eta=\frac{W_{\text{有用}}}{W_{\text{总}}}

同一条公式,下标里的汉字包 \text 与不包、直接写在公式里,这两种写法在本站编辑器里排出来完全一样。所以只看编辑器的预览,分辨不出哪种写法有隐患,问题要到别的环境里才暴露。

为什么要统一用 text 命令:LaTeX 编译的结果

把三种写法放进同一份 ctexart 文档,用 XeLaTeX 编译:\text 包裹的「有用」「总」正常显示;直接写的和 \mathrm 里的汉字全部没了,下标只剩一个空的 W,编译日志里是一串 Missing character 警告,文档照样编译成功,不报错。

这就是这类问题难发现的原因:不报错,PDF 也生成了,只有逐行看才会发现下标是空的。

三种中文写法编译后只有 text 包裹的下标留下汉字

在编辑页的「LaTeX 论文」标签(/latex)里写论文、把识别结果插进去之前,先把中文统一成 \text。

英文单词同理。公式里写 where、speed 这类单词不包 \text,会被当成一串变量排成斜体,单词之间的空格也会被吃掉。

公式里中文三种写法在编辑器与 LaTeX 编译中的表现

改法:在 LaTeX 模式里补上 text 命令

识别后先出结果卡片,点「插入」,公式进了编辑区后:

  1. 把公式工具栏右端的「LaTeX / 可视化」开关切到「LaTeX」看源码,找出所有汉字。
  2. 没包的,套上 \text{ 和 };包在 \mathrm{…} 里的,把命令名换成 text。
  3. 顺手核对汉字本身:字小或笔画细时可能认成形近字,对照原图改正。
  4. 切回「可视化」模式看一眼,汉字都在、位置没变就好。

补好 text 后的机械效率公式渲染效果

导出时的中文字体

改好的公式从顶栏「导出」选「Word(含公式)」,得到的是 Word 原生公式,双击可改。字体规则是:

  • 中文统一为宋体,没有单独的中文字体下拉;
  • 数学字体管斜体字母,正文字体管数字、函数名、化学元素这类直立部分,两项都在顶栏「导出」菜单的「Word 导出设置」里选,只作用于 Word 导出;
  • 在 WPS 里打开时,电脑没装所选字体,WPS 会换成它自己挑的字体,以当前版本为准。

导出菜单里的 Word(含公式)等七种格式

导出成 LaTeX 源码的话,\text 里的汉字原样保留,放进 ctexart 文档就能编译出来。公式和表格混排的论文,可以参考论文公式表格转 LaTeX;转到 Word 后要查哪些地方,见LaTeX转Word公式编辑。

把物理课本里一条带中文下标的公式截图识别,在 LaTeX 模式里把汉字全部套上 \text,再导出一份 Word 公式看看宋体效果。

延伸阅读

常见问题

中文被识别成乱码怎么办?
先看是哪一种乱。汉字认成了形近字或拼音字母的,在 LaTeX 模式里直接把字改对,并放进 text 命令的花括号里;汉字整段消失、只剩字母的,多半是原图字太小或截进了正文,把图放大、只框公式重新识别。导出到 Word 后中文统一显示为宋体,这是现在的导出规则,不是乱码。