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

打字机字体中的单引号是否特殊?MathJax排版疑问

MathJax排版Pascal表达式时单引号的特殊处理原因

我需要在MathJax中排版Pascal表达式:

(chr='A') and (num=3)

要求数字、括号、等号、逻辑and运算符以数学符号渲染,其余内容使用打字机字体。我通过TeX命令\hbox和\tt实现该效果,同时搭配了特殊CSS样式:

.a mjx-c.mjx-c2019::before {
  content: "\\27" !important;
  padding-right: 0.525em !important;
  font-family: MJXZERO, MJXTEX-T;
}

对应的HTML代码:

<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js" type="text/javascript"></script>
Correct: <span class="math a">\\[({	t chr}=\\hbox{\\tt 'A'})\\land
 ({	t num}=3)\\]</span>
Wrong: <span class="math b">\\[({	t chr}=\\hbox{\\tt 'A'})\\land
 ({	t num}=3)\\]</span>
Without \\hbox: <span class="math c">\\[({	t chr}={\tt 'A'})\\land
 ({	t num}=3)\\]</span>

该方案可实现需求,但必须借助上述特殊CSS才能让单引号显示为打字机字体;若不使用\hbox,单引号会被渲染为另一种符号。而{\tt ...}内的其他字符都能正常显示为打字机字体,原因如下:

核心原因

MathJax遵循TeX语法规则,在数学模式下,单引号(')是具备特殊语义的命令缩写——它会被解析为数学上标撇号(对应Unicode字符U+2019,用于表示导数等数学符号),而非普通文本字符。

即便用{\tt ...}指定了打字机字体,只要内容仍处于数学模式中,MathJax会优先处理单引号的数学语义,将其渲染为数学撇号,而非打字机风格的普通直单引号(U+0027)。

而\hbox的作用是将包裹内容切换到文本模式,在文本模式下,单引号不再具备数学特殊属性,会被当作普通文本字符处理,配合\tt就能正常显示为打字机字体的单引号。


内容的提问来源于stack exchange,提问作者Heiko Theißen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 02:23:14