【问题标题】:Latex equations with Angular4Angular4的乳胶方程
【发布时间】:2017-12-14 22:15:03
【问题描述】:

我想在 LaTeX 中显示方程式并在客户端渲染它们。这些方程有必须改变的变量。到目前为止,我只找到了 MathJax,但是当它们发生变化时它不会更新值。有像 http://plnkr.co/edit/FLduwmtHfkCN5XPfzMsA?p=preview 这样的例子,它确实改变了现场,但那是来自 Angular2 并且里面有奇怪的线 MathJax.Hub.Queue(["Typeset",MathJax.Hub, this.el.nativeElement]); 这给我留下了一个错误(因为我找不到 MathJax 变量)。 ng-katex 也不起作用,因为它没有出现在我的 ng-modules 文件夹中,并且输出很奇怪。

MathJax 本身可以完美运行,除非您更改 DOM 中的某些内容

例如:

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'app-test',
  template: '
  <button (click)="decrDenumerator()">-</button>
  Frac: {{frac}}
  <button (click)="incrDenumerator()">+</button>',
  styleUrls: ['./test.component.sass']
})
export class TestComponent implements OnInit {
  denumerator = 1;
  frac = '$\\frac{1}{' + this.denumerator + '}$';

  constructor() {
  }

  ngOnInit() {
  }
  incrDenumerator() {
    this.denumerator = Math.min(10, this.denumerator + 1);
    this.frac = '$\\frac{1}{' + this.denumerator + '}$';
  }

  decrDenumerator() {
    this.denumerator = Math.max(1, this.denumerator - 1);
    this.frac = '$\\frac{1}{' + this.denumerator + '}$';
  }
}

当单击其中一个按钮时,它只会将其显示为文本,而 MathJax 生成的第一个输出将在它旁边。

如何让 MathJax 注意到这些变化并采取相应措施?非常感谢。

【问题讨论】:

  • 您可能想要添加您尝试过的示例。要求某人为您提供解决方案并不适合 Stackoverflow。
  • @PeterKrautzberger 我添加了一些示例代码

标签: angular latex mathjax


【解决方案1】:

经过多次尝试,我找到了答案。

我必须导入 MathJax 类型。 npm install --save @types/mathjax

然后将它们导入到 tsconfig.app.json 文件中 "types": ["mathjax"].

然后我创建了以下指令

import {Directive, ElementRef, Input} from '@angular/core';

@Directive({
  selector: '[tex]'
})
export class TexDirective {
  @Input('tex') tex = '';
  constructor(private element: ElementRef) {}

  ngOnInit() {
    this.update();
  }

  ngOnChanges() {
    this.update();
  }

  update() {
    this.element.nativeElement.innerHTML = '$' + this.tex + '$';
    MathJax.Hub.Queue(['Typeset', MathJax.Hub, this.element.nativeElement]);
  }
}

我工作得很好。

【讨论】:

  • 如何使用这个指令?
  • 它说 MathJax 没有定义。安装了两个(js + typings)并将其添加到tsconfig.app.json有什么建议吗?
猜你喜欢
  • 2010-11-29
  • 2019-10-07
  • 2015-05-31
  • 1970-01-01
  • 2021-07-05
  • 2021-11-29
  • 1970-01-01
  • 1970-01-01
  • 2010-10-20
相关资源
最近更新 更多