【问题标题】:Jupyter notebook equation number increases each time cell is run每次运行单元格时,Jupyter 笔记本等式数都会增加
【发布时间】:2017-09-20 07:14:52
【问题描述】:

我遵循this question 的答案并使用以下内容在 Jupyter 笔记本中获取方程式编号:

%%javascript
MathJax.Hub.Config({
  TeX: { equationNumbers: { autoNumber: "AMS" } }
});

但是,每次我更新带有方程式的降价单元格时,数字都会增加一或从笔记本中已有的最大数字继续。

例如,如果单元格被编辑了两次并且它是笔记本中唯一的方程,则第一个方程可能编号为 (3),或者如果笔记本中有 4 个方程并且第一个方程可能编号为 (5)单元格被编辑过一次。如果我关闭笔记本并再次打开它,所有数字都是正确的。

有没有办法阻止这种情况发生或在不关闭和打开笔记本的情况下修复它?

【问题讨论】:

标签: javascript python jupyter-notebook mathjax


【解决方案1】:

如果你添加

MathJax.Hub.Register.StartupHook("TeX AMSmath Ready", function () {
  var AMS = MathJax.Extension['TeX/AMSmath'];
  MathJax.InputJax.TeX.postfilterHooks.Add(function (data) {
    var jax = data.script.MathJax;
    jax.startNumber = AMS.startNumber;
    jax.eqLabels = AMS.eqlabels;
    jax.eqIDs = AMS.eqIDs;
  });
  MathJax.InputJax.TeX.prefilterHooks.Add(function (data) {
    var jax = data.script.MathJax;
    if (jax.startNumber != undefined) {
      AMS.startNumber = jax.startNumber;
      Object.keys(jax.eqLabels).forEach(function (x) {delete AMS.labels[x]});
      Object.keys(jax.eqIDs).forEach(function (x) {delete AMS.IDs[x]});
    }
  }, 1);
});

到您的%%javascript 部分,这将设置一些前置和后置过滤器,这些过滤器保存有关方程编号、标签和方程 ID 的信息,这些信息在处理时是方程的一部分,如果重新处理,它将重置方程式编号以从给定方程式的编号开始,并从正在使用的方程式的记录中清除标签和ID,以便它应该使用现有的方程式编号重新排版(而不是关于重复@的错误987654323@ 宏,并且不更改用于链接到方程式的标签 ID)。

我认为这应该可以满足您的需求。

【讨论】:

    猜你喜欢
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 2018-11-04
    • 1970-01-01
    • 2017-10-21
    • 2017-11-04
    • 2016-05-30
    相关资源
    最近更新 更多