首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MathJax &输入

MathJax &输入
EN

Stack Overflow用户
提问于 2021-05-08 13:12:34
回答 1查看 518关注 0票数 1

在处理MathJax中的分数和方程式对齐时,我尝试用HTML接收文本输入。当我这样做时,数学排版就不起作用了(如下所示)。有办法做到这一点吗?

任何帮助都将不胜感激!

代码语言:javascript
复制
<html>
<script>
MathJax = {
  tex: {
    inlineMath: [['$', '$'], ['\\(', '\\)']]
  }
};
</script>
<script id="MathJax-script" async
  src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js">
</script>
Let $f(x)=\frac{x}{3}$.</br>
Then, 
$f(9)=\frac{<input type="text" size="3">}{3}=3$.</br></br> 
</html>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-09 12:44:19

MathJax不会处理包含<br>标记的数学运算(除了<br>和注释),所以您所做的工作是不起作用的。但是,有一个漏洞可以用来获取输入字段,正如在这个职位中讨论的那样,它使用MathML <semantics>标记将HTML导入表达式。

代码语言:javascript
复制
<script>
MathJax = {
  tex: {packages: {'[+]': ['input']}},
  startup: {
    ready() {
      const Configuration = MathJax._.input.tex.Configuration.Configuration;
      const CommandMap = MathJax._.input.tex.SymbolMap.CommandMap;
      const TEXCLASS = MathJax._.core.MmlTree.MmlNode.TEXCLASS;
      
      new CommandMap('input', {input: 'Input'}, {
        Input(parser, name) {
          const xml = parser.create('node', 'XML');
          const id = parser.GetBrackets(name, '');
          const w = parser.GetBrackets(name, '5em');
          const value = parser.GetArgument(name);
          xml.setXML(MathJax.startup.adaptor.node('input', {
            id: id, value: value, style: {width: w}, xmlns: 'http://www.w3.org/1999/xhtml'
          }), MathJax.startup.adaptor);
          xml.getSerializedXML = function () {
            return this.adaptor.outerHTML(this.xml) + '</input>';
          }
          parser.Push(
            parser.create('node', 'TeXAtom', [
              parser.create('node', 'semantics', [
                parser.create('node', 'annotation-xml', [
                  xml
                ], {encoding: 'application/xhtml+xml'})
              ])
            ], {texClass: TEXCLASS.ORD})
          );
        }
      });
      Configuration.create('input', {handler: {macro: ['input']}});

      MathJax.startup.defaultReady();
    }
  }
};
</script>
<script id="MathJax-script" defer src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>

$$ \int_{\input[sub][1em]{0}}^{\input[sup][1em]{1}} \input[integrand][10em]{}\, dx$$

如果你经常使用它,这可以变成一个正式的扩展。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67447944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档