में लेटेक्स मैथ का मूल्यांकन करना मैं एक HTML- आधारित कैलक्यूलेटर पर काम कर रहा हूं, और मैं एक अभिव्यक्ति प्रस्तुत करना चाहता हूं, फिर इसका मूल्यांकन करना चाहता हूं, और यह सब जावास्क्रिप्ट में किया जाना चाहिए। मैं लाटेक्स में अभिव्यक्ति को लिखना पसंद करूंगा, और इसके लिए प्रस्तुत अभिव्यक्ति को अंतःक्रियात्मक रूप से संपादित करना संभव है, लेकिन अन्य भाषाएं काम कर सकती हैं।जावास्क्रिप्ट
जो मैंने पहले कोशिश की है वह अभिव्यक्ति को प्रस्तुत करना है, अंतःक्रियात्मक रूप से, MathQuill के साथ, और फिर इसे MathJS के साथ मूल्यांकन करना है। यह कुछ हद तक काम करता है, हालांकि, दोनों पैकेज अलग-अलग लक्ष्यों के साथ डिजाइन किए गए हैं (MathQuill LaTeX प्रस्तुत करता है, जबकि MathJS में कस्टम गणित वाक्यविन्यास है), यह पूरी तरह से अच्छी तरह से काम नहीं करता है (उदाहरण के लिए यदि कोई उपयोगकर्ता \frac{5}{17*x}
में टाइप करता है और मानता है कि यह सही वाक्यविन्यास है, फिर इसका मूल्यांकन करता है और MathJS से एक त्रुटि प्राप्त करता है)।
वर्तमान में, मैं तीन तरीके आगे बढ़ने के लिए देखें: (? या हो सकता है MathJax- जो बेहतर है के लिए स्विच)
- मैं क्या है के साथ आगे बढ़ें।
- वाक्य रचना के लिए एक उपकरण है कि
- प्रतिपादन और करीब से मूल्यांकन के लिए दो उपकरण का पता लगाएं (चाहे वह लेटेक्स या कुछ अन्य भाषा में है) (अगर एक ही नहीं) दोनों प्रतिपादन और मूल्यांकन करता है का पता लगाएं
- अपने ही प्रतिपादन लिखें और मूल्यांकन उपकरण, जैसा कि here अनुशंसित है। मैं ऐसा नहीं करना पसंद करूंगा, क्योंकि यह बहुत कठिन लगता है, और मैं पहिया को फिर से शुरू नहीं करना चाहता हूं।
ऐसा करने का सबसे अच्छा तरीका क्या है?
अद्यतन 1:altJS पर विकल्प उपलब्ध भाषाओं की सूची के माध्यम से देखने के बाद, मुझे लगता है मैं उपयोगकर्ता इनपुट के लिए एक भाषा के रूप में अजगर, रूबी, या मूल इस्तेमाल कर सकते हैं लगता है। अगर मैंने ऐसा किया है, तो यह इसे प्रस्तुत करने के लिए कई संभावनाएं खुलता है (तकनीकी रूप से, यह "प्रतिपादन" नहीं है, लेकिन केवल इस बारे में सोचें कि वहां कितने वाक्यविन्यास हाइलाइटर्स हैं)। हालांकि, मैं नहीं चाहता कि उपयोगकर्ताओं को इन भाषाओं के अधिक उन्नत तत्वों तक पहुंच प्राप्त हो, क्योंकि यह मेरे उपयोगकर्ताओं को भ्रम जोड़ देगा, और यह असुरक्षित भी हो सकता है (eval
का उपयोग करना)। मैं केवल उपयोगकर्ताओं को गणित संचालन, चर (केवल वे जिन्हें मैं निर्दिष्ट करता हूं, और उपयोगकर्ता द्वारा निर्मित) का उपयोग करने में सक्षम होना चाहता हूं, और फ़ंक्शंस (केवल वे जिन्हें मैं निर्दिष्ट करता हूं, और उपयोगकर्ता द्वारा परिभाषित किया गया)। क्या भाषा का सबसेट प्रतिबंधित करने का कोई तरीका है जिसका उपयोग किया जा सकता है? 2
अद्यतन: मैं चल रहा है भाषा के बजाय altJS पृष्ठ पर और अधिक कुछ चारों ओर देखा, और महसूस किया है कि लगभग सभी भाषाओं के, जावास्क्रिप्ट को भाषा XYZ संकलित करने के लिए तो पेज पर JavaScript चला डिजाइन किए गए थे, XYZ पृष्ठ पर। मैंने हर एक को नहीं देखा है, लेकिन उनमें से ज्यादातर इस तरह लगते हैं। ब्रितन की तरह अन्य, ब्राउज़र में भाषा XYZ चलाने के लिए डिज़ाइन किए गए हैं, लेकिन उपयोगकर्ता के लिए इनपुट भाषा के बजाय जावास्क्रिप्ट के प्रतिस्थापन/पूरक के रूप में। क्या कुछ कामकाज है इसलिए मैं इनपुट के रूप में इन विधियों का उपयोग कर सकता हूं?
अद्यतन 3: उस जानकारी के लिए @ स्पेसडॉग पर धन्यवाद, और यह इंगित करने के लिए कि मैं विशिष्ट नहीं हूं कि उपयोगकर्ताओं को क्या हासिल करने में सक्षम होना चाहिए।
- बेसिक संचालन (इसके अलावा, घटाव, गुणा, विभाजन/भिन्न, घातांक, जड़ें, मापांक)
- कार्य (त्रिकोणमितीय कार्यों, लॉग, आदि: तो, यहाँ कार्यक्षमता है कि मैं प्राप्त किया जा करना चाहते हैं)
- स्थिरांक (ई, अनुकरणीय, आदि)
- चर (काम, रीअसाइनमेंट, और उन्हें प्रयोग)
- उपयोगकर्ता परिभाषित कार्यों
LaTeXCalc इन सभी आवश्यकताओं को पूरा करने के लिए लगता है, के अलावा आखरी। साथ ही, यह जावास्क्रिप्ट में प्रतीत नहीं होता है।
यह मुझे एक और विचार में लाता है जिसके बारे में मैंने सोचा है: प्रस्तुति के लिए MathJax जैसे कुछ का उपयोग करें, फिर गणना को संभालने के लिए Wolfram Alpha API का उपयोग करें। लाभ यह है कि इनपुट और आउटपुट दोनों के लिए इसमें अधिक उन्नत विकल्प होंगे। हालांकि, आवेदन बेकार किया जाएगा (क्यों नहीं wolframalpha.com का उपयोग करें, अगर कैलकुलेटर व्यावहारिक रूप से केवल एक क्लोन है?), यह पैसा खर्च करता है, और ऐप ऑफ़लाइन काम नहीं करेगा (यह एक डेस्कटॉप ऐप है, जो एचटीएमएल में लिखा गया है/सीएसएस/जे एस)। उस पर विचार?
शायद मेरा जवाब [यह] (http://stackoverflow.com/a/42232776) इसी तरह का प्रश्न मदद कर सकता है। – Jeff