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

Quarto数学模式下字母数字未应用mainfont/mathfont的问题咨询

Quarto数学模式中mainfont/mathfont对字母、数字无效的问题解答

这不是Quarto的预期行为,本质是LaTeX数学字体机制的默认规则导致的:

  • 数学模式中的变量字母默认使用「数学斜体」,数字默认使用「数学直立」,这两类字符的字体映射独立于\log这类数学运算符
  • 你设置的mathfont仅覆盖了数学运算符、符号等默认关联的字体范围,没有覆盖字母和数字的字体映射

更简洁的解决方法(无需手动包裹公式)

不用每个公式都加\mathit{}和\mathrm{},可以通过配置LaTeX包全局统一字体:

方案1:使用带数学支持的对应字体

如果你的目标字体有专门的数学版本(比如Lato对应的Lato Math),直接指定即可:

---
documentclass: article
mainfont: Lato
mathfont: Lato Math
---

$$ y = 123\cdot\log{x} $$

方案2:用unicode-math映射文本字体到数学范围

如果没有专门的数学字体,通过unicode-math包将文本字体映射到数学模式的字母、数字范围:

---
documentclass: article
mainfont: Lato
header-includes:
  - \usepackage{unicode-math}
  - \setmathfont{Lato}[Scale=MatchLowercase]
  - \setmathfont[range=up]{Lato}       # 映射直立数字/符号到Lato
  - \setmathfont[range=it]{Lato Italic} # 映射斜体变量到Lato斜体
---

$$ y = 123\cdot\log{x} $$

为什么你的临时方法能生效?

  • \mathit{}强制把公式内的字母用文本斜体(而非数学斜体)渲染,匹配了mainfont的设置
  • \mathrm{}把数字强制转为文本直立字体,也对齐了主字体风格

但这种手动方式维护成本高,全局配置才是更合理的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:45:46