如何使Mathjax响应式成为公式

问题描述 投票:4回答:3

我在响应式网站上显示数学表达式时遇到了很大的问题。特别是,如果您使用智能手机访问this page,则可以看到由于响应式设计,大多数数学表达式都被截断了。我正在使用Joomla和Jextbox Equation plugin来显示它们。

我希望页面上的公式的行为类似于this one on Wikipedia。如果您在智能手机上打开此页面,则可以看到公式太长,公式不会被截断。如果您从左向右滚动,则会显示它们。我想在页面上做同样的事情。

joomla responsive-design mathjax
3个回答
3
投票

the documentation启动MathJax的换行符:

HTML-CSS和SVG输出处理器实现了(大多数)MathML3>自动换行规范。 (NativeMML输出处理器在使用时依靠浏览器的本机MathML支持来处理换行。)由于换行需要额外的处理,因此会减慢数学输出,因此默认情况下该功能处于关闭状态,但可以通过以下方式启用它:添加

<script type="text/x-mathjax-config">
MathJax.Hub.Config({
 "HTML-CSS": { linebreaks: { automatic: true } },
         SVG: { linebreaks: { automatic: true } }
});
</script>

到加载MathJax.js本身的标记之前的页面。

但是,在您的示例中,有很多表格数学,即使用<mtables>进行布局(尽管使用TeX作为输入的人通常不知道,MathJax在内部将所有输入都转换为MathML)。

问题是:mtables不能真正断行,就像html表不能断行一样-响应表需要一些JS帮助,更重要的是,需要附加的语义标记。

PS:就其价值而言,我们实际上正在研究语义启发式方法,以使数学比换行符做得更好,但这是正在进行的研发,没有ETA。


2
投票

我访问了user3700643的page,发现仍然存在问题-当我在320×487上使用Firefox的“响应式设计视图”时。我的解决方案是doofus,因为它需要一些重复,但是我不仅在MathJax中使用了它(现在),而且在过去用于表和其他东西-都在Twitter Bootstrap网格环境中使用,但是我非常确定那没关系。

我一直在使用CSS3 @media Rule。这是我的特定版本:

@media(max-width:768px){
  .wide {display:none;}
  .mobilefont {font-size:0.8em;}
}
@media(min-width:768px){
  .tight {display:none;}
}

我只是将mobilefont字体加入进来,以进一步激发您的灵感。我有时会使用它。所以,我要做的是包装一个方程式-我正在将Latex和MathJax一起使用-带一个div,如果该方程式是为宽屏格式化的,则给div类别为“宽”,如果是格式化的,则给该分类为“紧密”小屏幕。您可以根据屏幕宽度是大于还是小于768px(这是常见的断点),来了解CSS3中的max-width / min-width值如何影响具有这些类名称的div的消失(但其他断点可以是由您定义)。

也就是说,我复制了我的大屏幕\ begin {align} \ end {align}块。我将副本粘贴在原始文本的正下方,并用div包裹每个副本,并为两个div赋予两个类名。然后,我使用“紧”类名对其进行编辑,以使其在响应设计视图中以较小的屏幕尺寸工作。

我也在MathJax上下文之外使用普通表完成了此操作。例如,我在表的给定列的每个

中使用了,以使该列在小屏幕设备上消失。

在您的页面上,如果您使用的是\ begin {align} \ end {align},则可以在“紧密” div版本中使用“紧凑的div版本”块(但是我看到您实际上使用的是\ begin {eqnarray *},但我尚未对此方案进行过测试),只需在左端的双整数前面加上一个&符,然后在换行符\\之后该积分打破新的界限。并在每行的每个等号前面加上“&”号。这样,以等号开头的线将向左移动,在积分的表达式下方对齐,而不是在其右侧对齐。

我认为这不会太令人困惑。这只是有点不合常规。但是,请看我对彼得·克劳茨贝格(Peter Krautzberger)的回答的评论……我发现当我使用&号时,他的脚本不起作用。但是关键是我的CSS3方法根本不需要它,因为我只是自己指定所有重新格式化的内容。

您可以通过css如下实现:

mjx-container mjx-math {
    white-space: normal;
}

0
投票

您可以通过css如下实现:

mjx-container mjx-math {
    white-space: normal;
}
© www.soinside.com 2019 - 2024. All rights reserved.