Mathjax: рдкреИрд░реЗрдВрдЯ рдбрд┐рд╡ рдХреЗ рдЖрдВрддрд░рд┐рдХ HTML рдХреЛ рдлрд┐рд░ рд╕реЗ рднрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЯреЙрдЧрд▓ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 28 рджрд┐рд╕ре░ 2020  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mathjax/MathJax

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдмрд╣реБ-рдкреГрд╖реНрда рдорд╛рд░реНрдХрдбрд╛рдЙрди рд╕рдВрдкрд╛рджрдХ рд╣реИ рдЬреЛ рдореИрдердЬреИрдХреНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд▓рд╛рдн рджреЗрддрд╛ рд╣реИред рдорд▓реНрдЯреА-рдкреЗрдЬ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рд╕рдореАрдХрд░рдгреЛрдВ рдХрд╛ рдХреНрд░реЙрд╕ рд░реЗрдлрд░реЗрдВрд╕рд┐рдВрдЧ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рд╛ рдЬрдм рддрдХ рдХрд┐ рдореИрдВрдиреЗ \ eqref {} рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛, рдореИрдердЬреИрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рддрд╛рдХрд┐ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдпрд╣ рдкрд╣рд▓реЗ рд▓рдХреНрд╖реНрдп рдкреГрд╖реНрда рдкрд░ рд╕рд╣реА рдорд╛рди рд╕реЗрдЯ рдХрд░ рд╕рдХреЗред , рдирдП рдкреГрд╖реНрда рдкрд░ рдбрд╛рдпрд╡рд░реНрдЯ рдХрд░реЗрдВ, рдлрд┐рд░ рд╕рдВрджрд░реНрдн рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЯреЙрдЧрд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╢рдмреНрдж рдкрд░ рдорд╛рдЙрд╕ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХреНрд╖реЗрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐, рдЗрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдиреНрдпреВрдирддрдо рдЙрджрд╛рд╣рд░рдг рд╣реИ:

<!DOCTYPE html>
<html class="htmlMain">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <script type="text/javascript" src="tex-svg-full.js" async></script>
    <!-- <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg-full.js"></script> -->
</head>
<body>
<textarea id="source" style="width:400px; height:100px;"></textarea>
<input type="button" value="Click!" onclick="compile();">
<div id="result" style="display:inline-block;"></div>
<script>
var source=document.getElementById("source"),
    result=document.getElementById("result");

function compile(){
    result.innerHTML=source.value;

    MathJax.texReset();
    MathJax.typesetClear();
    MathJax.typeset();

    result.innerHTML=result.innerHTML;
}
</script>
</body>
</html>

рд╕рдорд╕реНрдпрд╛ рд▓рд╛рдЗрди рдХреЗ рдХрд╛рд░рдг рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ: result.innerHTML=result.innerHTML; ред рдмрдЧ рдкреБрдирд░реБрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЕрдм рдпрд╣ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдмрдпрд╛рди рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдЧреИрд░-рддреБрдЪреНрдЫ рд╣реИ: result.innerHTML=result.innerHTML.replace(); ред рдореИрдВрдиреЗ рдорд╛рди рд▓рд┐рдпрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдмрдЧ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ \toggle рдХрдорд╛рдВрдб рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рддрдХ рдореИрдВрдиреЗ рдЬрд╛рдБрдЪ рдХреА рд╣реИред

рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж

Expected Behavior v3

рд╕рднреА 5 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

\toggle рдХрдорд╛рдВрдб рдЯреЙрдЧрд▓ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП DOM рдиреЛрдб рдореЗрдВ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рд╕рдм-рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ, рдФрд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдЯрд╛рдЗрдк рдХрд░рдирд╛ рд╣реИред рдЖрдкрдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ result.innerHTML = result.innerHTML рдкрд╣рд▓реЗ result рдкреЗрдбрд╝ рдХреЛ HTML рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд░рддреА рд╣реИ рдФрд░ рдлрд┐рд░ result рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рддреА рд╣реИред рдЪреВрдВрдХрд┐ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдХреНрд░рдорд╛рдВрдХрди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЬрдм рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╡реЗ рдЦреЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЯреЙрдЧрд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдЧреА (рдЬреИрд╕рд╛ рдХрд┐ MathJax рдореЗрдиреВ, рдкреЙрдк-рдЕрдк рдФрд░ рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдПрдВ рдЬреЛ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИрдВ)ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдереЗ, рддреЛ рдЯреЙрдЧрд▓ рдХреЛ рдЯреЙрдЧрд▓ рдХрд░рдиреЗ рдкрд░ рдлрд┐рд░ рд╕реЗ рдЯрд╛рдЗрдкрд╕реЗрдЯрд┐рдВрдЧ рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕рдВрд╢реЛрдзрд┐рдд URL рдХреЛ рд░реА-рдЯрд╛рдЗрдкрд╕реЗрдЯ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди (рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рдореЗрдВ рдЦреЛ рджреЗрдВрдЧреЗред

\eqref (рдФрд░ \ref ) рдХреЗ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдмрд╛рд╣рд░реА рд▓рд┐рдВрдХ рдХреЛ рдареАрдХ рд╕реЗ рд╕рдВрднрд╛рд▓ рд▓реЗрдЧрд╛ред рдпрд╣ рдЖрдкрдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХреА рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рд▓реЗрдмрд▓ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдмрд╛рд╣рд░реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЙрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд▓рд┐рдВрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдпрд╣ рдкрд░рдВрдкрд░рд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ \eqref{file.html#1.1} рд╕рдореАрдХрд░рдг 1.1 рдХреЛ file.html (рдпрд╛ рдХреЛрдИ рднреА URL рдЬрд┐рд╕реЗ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ) рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдЧрд╛ред рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ \eqref рдЙрд╕ рд░реВрдк рдореЗрдВ рд▓реЗрдмрд▓ рдвреВрдВрдв рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдореВрд▓ рдХреЛрдб рдареАрдХ рд╕реЗ рд▓рд┐рдВрдХ рд╣реЛ рд╕рдХреЗред рд╣рдо tagformat рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА url(id) рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ id рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкреВрд░реНрдг URL рд╣реИ рдФрд░ рдпрджрд┐ рд╣реИ рддреЛ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдВ, рдЕрдиреНрдпрдерд╛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЙрдЪрд┐рдд URL рдмрдирд╛рдПрдВред

рдпрд╣рд╛рдБ рдПрдХ рдРрд╕рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ:

<script>
MathJax = {
  loader: {load: ['[tex]/tagformat']},
  tex: {
    packages: {'[+]': ['tagformat', 'external-eqref']},
    tagformat: {
      //
      //  If the ID is already a URL, use it, otherwise construct the url as usual
      //
      url: (id, base) => (id.indexOf('#') >= 0 ? id : base + '#' + encodeURIComponent(id))
    }
  },
  startup: {
    ready() {
      //
      //  These would be replaced by import commands if you wanted to make
      //  a proper extension.
      //
      const Configuration = MathJax._.input.tex.Configuration.Configuration;
      const CommandMap = MathJax._.input.tex.SymbolMap.CommandMap;
      const Label = MathJax._.input.tex.Tags.Label;
      const BaseMethods = MathJax._.input.tex.base.BaseMethods.default;

      //
      //  Create a command map to override \ref and \eqref
      //
      new CommandMap('external-eqref', {
        ref:   ['HandleRef', false],
        eqref: ['HandleRef', true]
      }, {
        HandleRef(parser, name, eqref) {
          //
          //  Get the label parameter (keeping parse position as it is)
          //
          const i = parser.i;
          const label = parser.GetArgument(name);
          parser.i = i;
          //
          //  If the label is of the form url#tag and the label doesn't already exist
          //    split the url and tag
          //    create a label using the tag and a proper URL for the link
          //
          if (label.indexOf('#') >= 0 && !(parser.tags.allLabels[label] || parser.tags.labels[label])) {
            const [url, tag] = label.split(/#/);
            const id = parser.tags.formatId(tag);
            parser.tags.labels[label] = new Label(tag, parser.tags.formatUrl(id, url));
          }
          //
          //  Call the original function to perform the reference
          //
          BaseMethods.HandleRef(parser, name, eqref);
        }
      });
      //
      //  Create the package for the overridden macros
      //
      Configuration.create('external-eqref', {
        handler: {macro: ['external-eqref']}
      });

      MathJax.startup.defaultReady();
    }
  }
}
</script>

рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдЗрд╕реЗ рдПрдХ рдЙрдЪрд┐рдд рдЯреАрдПрдХреНрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЕрдкрдиреА рдлрд╛рдЗрд▓ рдореЗрдВ рд░рд╣рддрд╛ рд╣реИред

@dvpc , рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж,
рддреЛ рдпрд╣ рдореЗрд░рд╛ рдЦрд░рд╛рдм рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдерд╛ ... рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░рд╛ рдкреЗрдЬрд┐рдиреЗрд╢рди рдЕрд▓рдЧ рд╣реИ, рдореИрдВ рдмрд╛рд╣рд░реА рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбрд┐рд╡ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЦрдбрд╝реЗ рд╣реИрдВ, рдПрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдХреЛ рдЫрд┐рдкрд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддрд╛рдХрд┐ рдореИрдВ рдХреЗрд╡рд▓ рдЙрджреНрдзреГрдд рдХреЛ рдкрд╣рдЪрд╛рди рд╕рдХреВрдВ рд╕рдореАрдХрд░рдг рдХрд┐рд╕ рдбрд┐рд╡ рдкрд░ рд░рд╣рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдЕрди-рд╣рд╛рдЗрдб рдХрд░ рд╕рдХреВрдВред рдореИрдВ рдкрд╣рд▓реЗ рдХреЛрдб рдХрд╛ рдЖрджреА рдерд╛

    var eqsLabelsArrayPerPage=[];
    for(pageNum=0; pageNum<totalPageNumber; pageNum++){
        var jax = MathJax.getAllJax("resultPage-"+pageNum);
        var neWLabelsInPage=[];
        for (var i=0, l=jax.length; i<l; i++) {
            //alert(jax[i].math);
            jax[i].math.replace(/\\label\{([^\}]+)\}/g, function(x,y){
                neWLabelsInPage.push(y);
                return false;
            });
        }
        eqsLabelsArrayPerPage.push(neWLabelsInPage);
    }
    var eqOnWPVar;
    result.innerHTML=result.innerHTML.replace(/(href\=\"\#mjx\-eqn\-([^\"]*)\")/g,  function(x,y1,y2){
        eqOnWPVar=eqsLabelsArrayPerPage.findIndex(function(x) {
            return x.indexOf(y2) !== -1;
        });
        return y1+" onclick=\"currentPage="+eqOnWPVar+"; changePage();\"";
    });

рдЬрд┐рд╕рдХрд╛ рджреВрд╕рд░рд╛ рднрд╛рдЧ рдЕрдм рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

    var eqCitations=[];
    result.innerHTML.replace(/(href\=\"\#mjx\-eqn\-([^\"]*)\")/g,  function(x,y1,y2){
        eqCitations=document.querySelectorAll("mrow[href='#mjx-eqn-"+y2+"']");

        for(var i=0, len=eqCitations.length; i<len; i++){
            eqCitations[i].parentNode.parentNode.parentNode.onclick=function(){
                currentPage=eqsLabelsArrayPerPage.findIndex(function(subArray){
                    return subArray.indexOf(y2) !== -1;
                });
                changePage();
            };
        }
        return false;
    });

рдкреНрд░рддреНрдпреЗрдХ рдЙрджреНрдзрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдореАрдХрд░рдг рдХреЗ рд▓рд┐рдП currentPage рдХрд╛ рдкреБрдирд░реНрдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдирд╛ рдХреБрд╢рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди onclick рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж, рдЖрдкрдиреЗ рдЗрд╕ рддрд░рд╣ рдХреА рдмрд╛рддрдЪреАрдд рдореЗрдВ рдЬреЛ рд╕рдордп рджрд┐рдпрд╛, рдЙрд╕рдХреА рдореИрдВ рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ

рдЦреИрд░, рдпрд╣рд╛рдВ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдЬреЛ рд╡рд╣ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдк рдХрдо рд╕реЗ рдХрдо рдУрд╡рд░рд╣реЗрдб рдХреЗ рд╕рд╛рде рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рд╕рдм рдореИрдердЬреЗрдХреНрд╕ рдХреЗ рднреАрддрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рдКрдкрд░ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕рд╛ рд╕реЗрдЯрдЕрдк рд▓рдЧрддрд╛ рд╣реИред

рддреАрди рдореБрдЦреНрдп рдШрдЯрдХ рд╣реИрдВ: рдорд╛рдирдХ рдЯреИрдЧрд┐рдВрдЧ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрдкрд╡рд░реНрдЧ рдЬреЛ рдЙрд╕ рдкреГрд╖реНрда рдХрд╛ рдЯреНрд░реИрдХ рд░рдЦрддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдмрд▓ рд╡рд╛рд▓рд╛ рд╕рдореАрдХрд░рдг рдЪрд╛рд▓реВ рд╣реИ, рдПрдХ рдЯреАрдПрдХреНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЬреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП \ref рдФрд░ \eqref рдореИрдХреНрд░реЛрдЬрд╝ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИ рд╕рдВрджрд░реНрдн рдЬреЛ рдЕрдиреНрдп рдкреГрд╖реНрдареЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдВрдд рдореЗрдВ рдПрдХ рдЖрдЙрдЯрдкреБрдЯ рдкреЛрд╕реНрдЯ-рдлрд╝рд┐рд▓реНрдЯрд░ рдЬреЛ рдПрдХ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдХреЛ рдЙрди рд▓рд┐рдВрдХ рдкрд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬреЛ рд▓рд┐рдВрдХ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдФрд░ рдкреГрд╖реНрда рдЦреЛрд▓рддреЗ рд╣реИрдВ (рдФрд░ рд╡рд░реНрддрдорд╛рди рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВ)ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЬреЛ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдврд╛рдВрдЪрд╛ рджреЗрдВ)ред рдпрд╣рд╛рдВ рдПрдХ рдкреВрд░реА рдлрд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдИ рд▓реЗрдмрд▓ рд╡рд╛рд▓реЗ рд╕рдореАрдХрд░рдг рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдВрдХ рд╡рд┐рднрд┐рдиреНрди рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рд╣реИрдВред

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta content="width=device-width, initial-scale=1" name="viewport"/>
<title>Page switching \eqref links</title>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script>
let currentPage = 1;
MathJax = {
  startup: {
    ready() {
      //
      //  These would be replaced by import commands if you wanted to make
      //  a proper extension.
      //
      const TagsFactory = MathJax._.input.tex.Tags.TagsFactory;
      const AmsTags = MathJax._.input.tex.ams.AmsConfiguration.AmsTags;

      //
      // Subclass the AmsTags object to track page information
      //
      class PageTags extends AmsTags {

        constructor() {
          super();
          this.page = null;        // the div for the last page where we found an equation
          this.pageNo = "";        // the number of that page
          this.math = null;        // the MathItem for the current equation
        }

        //
        //  Save the MathItem and do the usual startup.
        //
        startEquation(math) {
          this.math = math;
          super.startEquation(math);
        }

        //
        //  Check if there are labels for this equation.
        //  If so, find the page for this MathItem
        //    and save the page with the label information.
        //  The do the usual finishing up.
        //
        finishEquation(math) {
          const labels = Object.keys(this.labels);
          if (labels.length) {
            const page = this.getPage();
            labels.map((label) => {this.labels[label].page = page});
          }
          super.finishEquation(math);
        }

        //
        //  If there is a cached page div and this MathItem is in it, return its page number.
        //  Otherwise, look through the parents of the math until you find its page.
        //  If you found a page, cache it and get its number.
        //  Return the page number.
        //
        getPage() {
          let node = this.math.start.node;
          if (this.page && this.page.contains(node)) return this.pageNo;
          while (node && (!node.id || node.id.substr(0,11) !== 'resultPage-')) {
            node = node.parentNode;
          }
          if (node) {
            this.page = node;
            this.pageNo = node.id.substr(11);
          }
          return this.pageNo;
        }

      }

      //
      //  These would be replaced by import commands if you wanted to make
      //  a proper extension.
      //
      const Configuration = MathJax._.input.tex.Configuration.Configuration;
      const CommandMap = MathJax._.input.tex.SymbolMap.CommandMap;
      const Label = MathJax._.input.tex.Tags.Label;
      const ParseUtil = MathJax._.input.tex.ParseUtil.default;

      //
      //  Create a command map to override \ref and \eqref to handle page changes.
      //
      new CommandMap('page-eqref', {
        ref:   ['HandleRef', false],
        eqref: ['HandleRef', true]
      }, {
        //
        //  Copied from BaseMethods.HandleRef, and modified to add page information.
        //  
        HandleRef(parser, name, eqref) {
          //
          //  Get the label name and look up its data.
          //
          const label = parser.GetArgument(name);
          let ref = parser.tags.allLabels[label] || parser.tags.labels[label];
          //
          //  If none, then reprocess this item, if we are on the first pass,
          //  and use a blank label.
          //
          if (!ref) {
            if (!parser.tags.refUpdate) {
              parser.tags.redo = true;
            }
            ref = new Label();
          }
          //
          //  Get the tag string.
          //
          const tag = (eqref ? parser.tags.formatTag(ref.tag) : ref.tag);
          //
          //  Create an mrow with the parsed tags contents and href link.
          //
          const node = parser.create('node', 'mrow', ParseUtil.internalMath(parser, tag), {
            href: parser.tags.formatUrl(ref.id, parser.options.baseURL), 'class': 'MathJax_ref'
          });
          //
          //  If the page of the linked quation is not the same as our own equation,
          //    Add a page attribute to the mrow.
          //
          if (ref.page !== parser.tags.getPage()) {
            node.attributes.set('data-page', ref.page);
          }
          parser.Push(node);
        }
      });
      //
      //  Create the package for the overridden macros
      //
      Configuration.create('page-eqref', {
        handler: {macro: ['page-eqref']},
        tags: {page: PageTags}
      });

      //
      //  Do the normal setup (create the input and output jax and other objects)
      //
      MathJax.startup.defaultReady();

      //
      //  The listener function for when a link goes to a different page:
      //     Unhide the linked page and hide the current one.
      //     Save the current page as the linked one.
      //
      const listener = function (event) {
        const n = this.getAttribute('data-page');
        document.getElementById('resultPage-' + n).classList.remove('hidden');
        document.getElementById('resultPage-' + currentPage).classList.add('hidden');
        currentPage = n;
      };

      //
      //  Add a post-filter to the output jax to look for links that are to different
      //    pages, add the event listener to the <a> element for the link, and
      //    propagate the page to the anchor where the listener can find it.
      //
      MathJax.startup.output.postFilters.add(({data}) => {
        for (const link of data.querySelectorAll('[data-page]')) {
          link.parentNode.addEventListener('click', listener, true);
          link.parentNode.setAttribute('data-page', link.getAttribute('data-page'));
        }
      });
    }
  },
  tex: {
    packages: {'[+]': ['page-eqref']},
    tags: 'page'
  }
}
</script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
<style>
div {
  border: 1px solid grey;
  padding: .5em;
}
h1 {
  font-size: 130%;
  margin-top: 0;
}
.hidden {
  display: none;
}
.spacer {
  height: 40em;
  width: 1em;
  background-color: red;
  margin: 1em 0;
  border: none;
}
</style>
</head>
<body>

<div class="spacer"></div>

<div id="resultPage-1">
<h1>Page 1</h1>
A math formula:
$$E = mc^2. \tag{1}\label{eq1}$$
That is the formula.  
We link to \eqref{eq3}.
</div>

<div id="resultPage-2" class="hidden">
<h1>Page 2</h1>
This page has a different formula:
$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}. \tag{2}\label{eq2}$$
And a second one:
$$\frac{x+1}{x-1}. \tag{2.1}\label{eq2.1}$$
We link to \eqref{eq1}.
</div>

<div id="resultPage-3" class="hidden">
<h1>Page 3</h1>
This one has yet another formula:
$$f(a) = \frac{1}{2\pi i} \oint\frac{f(z)}{z-a}dz. \tag{3}\label{eq3}$$
We link to \eqref{eq2}, and \eqref{eq3}.
</div>

<div class="spacer"></div>

</body>
</html>

рдЧрдгрд┐рдд рдХреЗ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рдХреА рд▓рд╛рд▓ рдкрдЯреНрдЯрд┐рдпрд╛рдБ рдкреГрд╖реНрда рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдмрдбрд╝рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВ рддрд╛рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХреЗрдВ рдХрд┐ рдЙрдЪрд┐рдд рд╕рдореАрдХрд░рдг рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрд╕рд╡реАрдЬреА рдкрджреЛрдВ рдкрд░ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреЛ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВред рдореИрдВ рд▓рдХреНрд╖реНрдпреАрдХрд░рдг рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд╕рдВрдЧрдд рд╣реЛ, рд▓реЗрдХрд┐рди рд╡рд╣ рдЕрднреА рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИред рдХреЙрдордирдПрдЪрдЯреАрдПрдордПрд▓ рдЗрд╕рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рдХрд░рддрд╛ рд╣реИред

рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рд╡рд╣ рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдореИрдВ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЙрддреНрддрд░ рджреЗрдиреЗ рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рдЧрд╛рдП рдЧрдП рд╕рдордп рдФрд░ рдКрд░реНрдЬрд╛ рдХреА рдкрд░реНрдпрд╛рдкреНрдд рд╕рд░рд╛рд╣рдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА рдЖрдкрдХрд╛ рдЬрд╡рд╛рдм рджреЗрдЦрд╛, рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХреВрдВ, рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧреЗрдЧрд╛ред рдЖрдкрдХрд╛ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдХреЛрдИ рджрд┐рдХреНрдХрдд рдирд╣реАрдВ рд╣реИред рдпрд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рдереА, рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рд▓рд╛рдпрдХ рдереА рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рджреВрд╕рд░реЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдПред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

albertodiazdorado picture albertodiazdorado  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

josephernest picture josephernest  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dpvc picture dpvc  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

MasaYan24 picture MasaYan24  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

photino picture photino  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ