2017-09-20 4 views
1

je suivais la réponse à this question et utilisé ce qui suit pour obtenir des numéros d'équation dans un cahier Jupyter:numéro d'équation portable Jupyter augmente chaque cellule de temps est exécuté

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

Cependant, chaque fois que je mets à jour une cellule démarquage avec un équation en elle, le nombre augmente d'un ou continue du plus grand nombre déjà dans le cahier. Par exemple, la première équation peut être numérotée (3) si la cellule a été éditée deux fois et c'est la seule équation dans le cahier, ou elle peut être numérotée (5) s'il y a 4 équations dans le cahier et la cellule a été éditée une fois. Si je ferme le cahier et l'ouvre à nouveau, tous les chiffres sont corrects.

Y at-il un moyen d'empêcher cela ou de le réparer sans fermer et ouvrir le portable?

+0

Essayez d'ajouter 'MathJax.Hub.Queue ([" resetEquationNumbers ", MathJax.InputJax.TeX]);' au bloc javascript, cf. http://docs.mathjax.org/en/latest/advanced/typeset.html#reset-equation-numbers. –

Répondre

0

Si vous ajoutez

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); 
}); 

à votre section %%javascript, qui sera mis en place des filtres post-pré et enregistrer les informations sur les numéros d'équation, les étiquettes et les ID d'équation qui font partie de l'équation quand il est traité, et s'il est retraité, il réinitialisera la numérotation de l'équation pour commencer au numéro de l'équation donnée, et effacera les étiquettes et les identifiants des enregistrements de ceux utilisés, de sorte qu'il devrait être reformaté en utilisant le numéro d'équation (et non erreur sur les macros \label en double, et ne pas modifier les identifiants d'étiquette utilisés pour la liaison à l'équation).

Je pense que cela devrait faire ce que vous cherchez.