Tôi đang làm việc trên máy tính dựa trên html và tôi muốn hiển thị biểu thức, sau đó đánh giá nó và tất cả điều này phải được thực hiện bằng Javascript. Tôi muốn biểu thức được viết trong LaTeX và để có thể chỉnh sửa biểu thức được hiển thị tương tác, nhưng các ngôn ngữ khác có thể hoạt động.Đánh giá Toán Latex trong Javascript
Điều tôi đã thử trước đây là biểu hiện biểu thức, tương tác với MathQuill và sau đó đánh giá nó bằng MathJS. Tuy nhiên, điều này có thể được thiết kế với các mục tiêu khác nhau (MathQuill ám LaTeX, trong khi MathJS có cú pháp toán tùy chỉnh), nó không hoạt động tốt (ví dụ: nếu người dùng nhập \frac{5}{17*x}
và giả định rằng đó là cú pháp chính xác, sau đó đánh giá nó và nhận được một lỗi từ MathJS).
Hiện nay, tôi thấy ba cách để tiến hành: (? Hoặc có thể chuyển sang MathJax- mà là tốt hơn)
- Tiếp tục với những gì tôi có.
- Tìm một công cụ nào cả vẽ và đánh giá (cho dù đó là trong mủ hoặc một số ngôn ngữ khác)
- Tìm hai công cụ cho dựng hình và đánh giá với gần (nếu không giống nhau) cú pháp
- Viết vẽ của riêng tôi và công cụ đánh giá, như được đề xuất here. Tôi không muốn làm điều này, bởi vì nó có vẻ tẻ nhạt, và tôi không muốn phát minh lại bánh xe.
Cách bast để làm điều này là gì?
Cập nhật 1: Sau khi xem qua danh sách các ngôn ngữ thay thế có sẵn tại altJS, tôi nghĩ tôi có thể sử dụng Python, Ruby hoặc Basic làm ngôn ngữ cho người dùng nhập. Nếu tôi đã làm điều đó, nó sẽ mở ra rất nhiều khả năng để hiển thị nó (về mặt kỹ thuật, nó không phải là "dựng hình", nhưng chỉ cần nghĩ về số lượng tô sáng cú pháp có trên mạng). Tuy nhiên, tôi không muốn người dùng có quyền truy cập vào các phần tử nâng cao hơn của các ngôn ngữ này, bởi vì nó sẽ thêm nhầm lẫn cho người dùng của tôi và cũng có thể không an toàn (như sử dụng eval
). Tôi chỉ muốn người dùng có thể sử dụng phép toán, biến (chỉ những thao tác mà tôi chỉ định là có thể, và cũng do người dùng tạo) và chức năng (chỉ những người mà tôi chỉ định họ có thể và cũng do người dùng xác định). Có cách nào để hạn chế tập con của ngôn ngữ có thể được sử dụng không?
Cập nhật 2: Tôi nhìn xung quanh một số chi tiết trên trang altJS, và nhận ra rằng hầu hết các ngôn ngữ được thiết kế để biên dịch ngôn ngữ XYZ JavaScript, sau đó chạy JavaScript trên trang web, thay vì ngôn ngữ chạy XYZ trên trang. Tôi đã không xem xét từng cái một, nhưng hầu hết chúng dường như giống như thế này. Những người khác, như Brython, dường như được thiết kế để chạy ngôn ngữ XYZ trong trình duyệt, nhưng như là một sự thay thế/bổ sung cho JavaScript thay vì là một ngôn ngữ đầu vào cho người dùng. Có cách giải quyết nào để tôi có thể sử dụng các phương thức này làm đầu vào không?
Cập nhật 3: Cảm ơn bạn @SpaceDog về thông tin đó và chỉ ra rằng tôi chưa cụ thể về những gì người dùng có thể đạt được. Vì vậy, đây là chức năng mà tôi muốn đạt được:
- cơ bản hoạt động (cộng, trừ, nhân, chia/phân số, lũy thừa, rễ, mô đun)
- Chức năng (hàm lượng giác, các bản ghi, vv)
- Constants (e, pi, vv)
- biến (chuyển nhượng, phân công lại, và sử dụng chúng)
- Người dùng xác định chức năng
LaTeXCalc dường như đáp ứng tất cả các yêu cầu này, trừ trường cái cuối cùng. Ngoài ra, nó không xuất hiện trong Javascript.
Điều này đưa tôi đến một ý tưởng khác mà tôi đã nghĩ đến: sử dụng một cái gì đó như MathJax để trình bày, sau đó sử dụng Wolfram Alpha API để thực sự xử lý tính toán. Những lợi ích là nó sẽ có nhiều tùy chọn nâng cao hơn cho cả đầu vào và đầu ra. Tuy nhiên, ứng dụng sẽ trở nên vô ích (tại sao không sử dụng wolframalpha.com, nếu máy tính thực tế chỉ là một bản sao?), Nó tốn tiền và ứng dụng sẽ không hoạt động ngoại tuyến (nó là ứng dụng dành cho máy tính để bàn, được viết bằng HTML/CSS/JS). Suy nghĩ về điều đó?
Có lẽ câu trả lời của tôi cho [this] (http://stackoverflow.com/a/42232776) câu hỏi tương tự có thể hữu ích. – Jeff