Mathjax: MathJax3 рдХрд╛ рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдлреЙрдиреНрдЯ

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

рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╣рдо рдЧрдгрд┐рдд рдХреЗ рднрд╛рд╡реЛрдВ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдлрд╝реЙрдиреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд╣рдордиреЗ рдпрд╣реА рдХрд┐рдпрд╛ рд╣реИ:

  1. рдлрд╝реЙрдиреНрдЯ рдХрд╛ рдЖрд░реЛрд╣ рдФрд░ рдЕрд╡рд░реЛрд╣ 30 рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ
  2. рдирдпрд╛ рдлреЙрдиреНрдЯ рдбреЗрдЯрд╛ рдЬрдирд░реЗрдЯ рдХрд░реЗрдВ

рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣рдо рдЧреНрд▓рд┐рдлрд╝ рд╕реЗ рдирдИ рдЧрджреНрджреА рд╢реИрд▓реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ

рдкреИрдбрд┐рдВрдЧ-рдЯреЙрдк: рдЧреНрд▓рд┐рдлрд╝.рдореЗрдХреНрд╕ / рдлреЙрдиреНрдЯ
рдкреИрдбрд┐рдВрдЧ-рд▓реЗрдлреНрдЯ: рдЧреНрд▓рд┐рдлрд╝.рдбрд╛рд╡реЗрдВрд╕рд╡реАрдб / рдлреЙрдиреНрдЯ.рдЯреБрдирдЯреНрд╕рдкреЗрд░рд┐рдо
рдкреИрдбрд┐рдВрдЧ-рдмреЙрдЯрдо: -glyph.yMin / font.unitsPerEm
рдЧрджреНрджреА-рд╕рд╣реА: 0

рдЕрдм рддрдХ рдЧрдгрд┐рдд рдХреЗ рднрд╛рд╡ рдЕрдЪреНрдЫреЗ рд▓рдЧрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдХреБрдЫ рд╕рд╡рд╛рд▓ рд╣реИрдВ:
рдпрджрд┐ рдЧреНрд▓рд┐рд╕рд┐рди рдмреЗрд╕рд▓рд╛рдЗрди (yMin> 0) рд╕реЗ рдКрдкрд░ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдкреИрдбрд┐рдВрдЧ-рдЯреЙрдк рдФрд░ рдкреИрдбрд┐рдВрдЧ-рдмреЙрдЯрдо рдХреИрд╕реЗ рдорд┐рд▓реЗрдЧрд╛?
рдХреНрдпрд╛ рдХреБрдЫ рдФрд░ рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рд╣рдо рдЧрд╛рдпрдм рд╣реИрдВ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЖрдкрдХреЛ рд╕реАрдПрд╕рдПрд╕ рдХреЛ рд╕реНрд╡рдпрдВ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ MathJax рдЖрдкрдХреЗ рд▓рд┐рдП рдлрд╝реЙрдиреНрдЯ рдбреЗрдЯрд╛ рд╕реЗ рдХрд░реЗрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЙрди рд╡рд░реНрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝реЙрдиреНрдЯ рдбреЗрдЯрд╛ рдХреА рдЬрдЧрд╣ рд▓реЗрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЖрдк рдПрдХ рдирдП рдлрд╝реЙрдиреНрдЯ (рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдП MathJax рдлрд╝реЙрдиреНрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп) рд╕реЗ рд▓реЗ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП TeXFont рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЙрдкрд╡рд░реНрдЧрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЕрдкрдиреЗ рдирдП рд╡рд░реНрдгреЛрдВ рдХреЛ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд▓реЛрдЧреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдлрд╝реЙрдиреНрдЯ рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╝рд╛рдпрд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реАрдПрд╕рдПрд╕ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рдЬреЛрдбрд╝рдирд╛ рдФрд░ рд╡реЗрдм рдлреЛрдВрдЯ рдХреЗ рд▓рд┐рдП @font-face рдирд┐рдпрдо рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдпрд╣рд╛рдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдПрд░рд┐рдпрд▓ рдлрд╝реЙрдиреНрдЯ (рд╕реНрдерд╛рдиреАрдп рдлрд╝реЙрдиреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛) рд╕реЗ A рдХреЛ рд╕рд╛рдорд╛рдиреНрдп, рдмреЛрд▓реНрдб рдФрд░ рдЗрдЯреИрд▓рд┐рдХ рд╡реЗрд░рд┐рдПрдВрдЯ рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИред

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta content="width=device-width, initial-scale=1" name="viewport"/>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<title>Replace Glyph in CHTML Font</title>
<script>
MathJax = {
  startup: {
    ready() {
      //
      //  If you make your own component, these would be obtained
      //  via require() or import commands
      //
      const TeXFont = MathJax._.output.chtml.fonts.tex_ts.TeXFont;
      const Package = MathJax._.components.package.Package;

      //
      //  Font data, by variant and Unicode position.  The array is 
      //  height, depth, width, and additional information.  Here f gives 
      //  the font specifier (which refers to the defaultStyles and 
      //  defaultFonts given below).
      //
      const chars = {
        normal: {
          0x41: [.73, 0, .667, {f: 'M-R'}] 
        },
        bold: {
          0x41: [.73, 0, .722, {f: 'M-B'}]
        },
        italic: {
          0x41: [.73, 0, .667, {f: 'M-I'}]
        },
      };

      class MyFont extends TeXFont {
        constructor(options) {
          super(options);
          //
          //  Add in the characters for the substitute font defined in chars
          //
          for (const variant of Object.keys(chars)) {
            this.defineChars(variant, chars[variant]);
          }
        }
      }

      //
      //  Add the font styles to select the proper fonts
      //
      Object.assign(MyFont.defaultStyles, {
        '.TEX-M-R': {
          'font-family': 'MJXZERO, MJXTEX-M-R'
        },
        '.TEX-M-B': {
          'font-family': 'MJXZERO, MJXTEX-M-B',
        },
        '.TEX-M-I': {
          'font-family': 'MJXZERO, MJXTEX-M-I'
        }
      });

      //
      //  Add the font definitions (using local fonts, but could be web fonts)
      //
      Object.assign(MyFont.defaultFonts, {
        '@font-face /* M-R */': {
          'font-family': 'MJXTEX-M-R',
          src: 'local("Arial"), local("Arial-Regular")'
        },
        '@font-face /* M-B */': {
          'font-family': 'MJXTEX-M-B',
          src: 'local("Arial Bold"), local("Arial-Bold")'
        },
        '@font-face /* M-I */': {
          'font-family': 'MJXTEX-M-I',
          src: 'local("Arial Italic"), local("Arial-italic")'
        }
      });

      //
      //  Configure CommonHTML to use the new font
      //
      MathJax.config.chtml = {font: new MyFont({fontURL: Package.resolvePath('output/chtml/fonts/woff-v2', false)})};

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

<p style="font-size: 200%">
$$ABx + {\bf AB} + {\rm AB}$$
</p>

</body>
</html>

рд╢рд╛рдпрдж рдпрд╣ рдЖрдкрдХреЛ рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛ред

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

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

рдЖрдкрдХреЛ рд╕реАрдПрд╕рдПрд╕ рдХреЛ рд╕реНрд╡рдпрдВ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ MathJax рдЖрдкрдХреЗ рд▓рд┐рдП рдлрд╝реЙрдиреНрдЯ рдбреЗрдЯрд╛ рд╕реЗ рдХрд░реЗрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЙрди рд╡рд░реНрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝реЙрдиреНрдЯ рдбреЗрдЯрд╛ рдХреА рдЬрдЧрд╣ рд▓реЗрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЖрдк рдПрдХ рдирдП рдлрд╝реЙрдиреНрдЯ (рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдП MathJax рдлрд╝реЙрдиреНрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп) рд╕реЗ рд▓реЗ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП TeXFont рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЙрдкрд╡рд░реНрдЧрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЕрдкрдиреЗ рдирдП рд╡рд░реНрдгреЛрдВ рдХреЛ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд▓реЛрдЧреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдлрд╝реЙрдиреНрдЯ рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╝рд╛рдпрд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реАрдПрд╕рдПрд╕ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рдЬреЛрдбрд╝рдирд╛ рдФрд░ рд╡реЗрдм рдлреЛрдВрдЯ рдХреЗ рд▓рд┐рдП @font-face рдирд┐рдпрдо рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдпрд╣рд╛рдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдПрд░рд┐рдпрд▓ рдлрд╝реЙрдиреНрдЯ (рд╕реНрдерд╛рдиреАрдп рдлрд╝реЙрдиреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛) рд╕реЗ A рдХреЛ рд╕рд╛рдорд╛рдиреНрдп, рдмреЛрд▓реНрдб рдФрд░ рдЗрдЯреИрд▓рд┐рдХ рд╡реЗрд░рд┐рдПрдВрдЯ рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИред

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta content="width=device-width, initial-scale=1" name="viewport"/>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<title>Replace Glyph in CHTML Font</title>
<script>
MathJax = {
  startup: {
    ready() {
      //
      //  If you make your own component, these would be obtained
      //  via require() or import commands
      //
      const TeXFont = MathJax._.output.chtml.fonts.tex_ts.TeXFont;
      const Package = MathJax._.components.package.Package;

      //
      //  Font data, by variant and Unicode position.  The array is 
      //  height, depth, width, and additional information.  Here f gives 
      //  the font specifier (which refers to the defaultStyles and 
      //  defaultFonts given below).
      //
      const chars = {
        normal: {
          0x41: [.73, 0, .667, {f: 'M-R'}] 
        },
        bold: {
          0x41: [.73, 0, .722, {f: 'M-B'}]
        },
        italic: {
          0x41: [.73, 0, .667, {f: 'M-I'}]
        },
      };

      class MyFont extends TeXFont {
        constructor(options) {
          super(options);
          //
          //  Add in the characters for the substitute font defined in chars
          //
          for (const variant of Object.keys(chars)) {
            this.defineChars(variant, chars[variant]);
          }
        }
      }

      //
      //  Add the font styles to select the proper fonts
      //
      Object.assign(MyFont.defaultStyles, {
        '.TEX-M-R': {
          'font-family': 'MJXZERO, MJXTEX-M-R'
        },
        '.TEX-M-B': {
          'font-family': 'MJXZERO, MJXTEX-M-B',
        },
        '.TEX-M-I': {
          'font-family': 'MJXZERO, MJXTEX-M-I'
        }
      });

      //
      //  Add the font definitions (using local fonts, but could be web fonts)
      //
      Object.assign(MyFont.defaultFonts, {
        '@font-face /* M-R */': {
          'font-family': 'MJXTEX-M-R',
          src: 'local("Arial"), local("Arial-Regular")'
        },
        '@font-face /* M-B */': {
          'font-family': 'MJXTEX-M-B',
          src: 'local("Arial Bold"), local("Arial-Bold")'
        },
        '@font-face /* M-I */': {
          'font-family': 'MJXTEX-M-I',
          src: 'local("Arial Italic"), local("Arial-italic")'
        }
      });

      //
      //  Configure CommonHTML to use the new font
      //
      MathJax.config.chtml = {font: new MyFont({fontURL: Package.resolvePath('output/chtml/fonts/woff-v2', false)})};

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

<p style="font-size: 200%">
$$ABx + {\bf AB} + {\rm AB}$$
</p>

</body>
</html>

рд╢рд╛рдпрдж рдпрд╣ рдЖрдкрдХреЛ рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛ред

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

PS, yMin> 0 рд╡рд╛рд▓реЗ рдкрд╛рддреНрд░реЛрдВ рдореЗрдВ рдирдХрд╛рд░рд╛рддреНрдордХ рдЧрд╣рд░рд╛рдИ рд╣реЛрдЧреА, рдЬрд┐рд╕рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред

рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЗрд╕реЗ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреА рддрд░рд╣ рдХрд░реВрдВрдЧрд╛ред

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

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

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

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

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

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

henok-tesfaye picture henok-tesfaye  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ