让过长的 KaTeX 公式支持横向滚动
在博客中,我一直使用 KaTeX 进行数学公式的渲染。但是有一个问题,当行间公式过长时,公式会超出边界,导致整个页面过宽。这点在电脑上没什么问题,但是在移动端就成了灾难,整个页面显示都有问题。
之前的解决方法是手动换行,但是不同的手机支持的最大宽度不同,而且有些公式实在是不方便换行(比如一个大长分式)。而且即使是能够换行,虽然在手机上没问题了,但是由于这些奇怪的换行,在电脑上看总觉得奇奇怪怪的。
找了一圈,最终的解决方法还是让 KaTeX 支持横向滚动,这样在公式过长的时候,会自动出现滚动条,这样就不会影响整个页面的宽度了。
官网给出了一个解决方法,即在 source/_data/styles.styl
中添加如下配置:
1 | .katex-display { overflow: auto hidden } |
但这带来了一个问题,就是在某些缩放比例下,生成的公式最上面和最底下有几个像素被吞掉。
例如,下面左侧是在 100% 缩放下的公式,右侧是在 110% 缩放下的公式。二者对比就可以明显发现,左侧最上面少了一些像素,其中字母 C 尤为明显。而两侧最下面都少了一些像素(还是字母 C 最为明显)。


问了一下 DeepSeek,给出的解决方法是给予额外的边距补偿:
1 | .katex-display { |
这样显示的公式就是正常的了:
另外,在手机上显示滚动条还是比较丑的,我们可以把它隐藏掉:
1 | @media (max-aspect-ratio: 2400/1850) { |
这样就可以隐藏 KaTeX 公式的水平滚动条(但保持可滚动)。