gpt4 book ai didi

angular - Angular4 的 Latex 方程

转载 作者:行者123 更新时间:2023-12-01 22:27:21 25 4
gpt4 key购买 nike

我想在 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 注意到这些变化并采取相应的行动?非常感谢。

最佳答案

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

我必须导入 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]);
}
}

我工作得很好。

关于angular - Angular4 的 Latex 方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47822913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com