html - मैं मार्कटेक के साथ लाटेक्स को कैसे मिला सकता हूं?




latex markdown (10)

मैं कक्षा नोट्स के लिए मार्कडाउन का उपयोग कर रहा हूं, और यह बहुत अच्छा है। मैं मार्कडाउन पर कुछ प्रीप्रोकैसिंग भी करता हूं ताकि मैं टेबल जैसी चीजें कर सकूं। लेकिन इस शब्द में मैं बहुत सारे गणित के साथ एक कक्षा पढ़ रहा हूं, और मुझे मार्कटाउन के साथ लाटेक्स सूत्रों को रखने में सक्षम होना अच्छा लगेगा, ऐसा कुछ:

The refinement relation is written $a \sqsubseteq b$, which can be 
pronounced "$a$ approximates $b$" or "$b$ is at least as defined as $a$".

मैं लाटेक्स के प्रत्येक टुकड़े को लेने में सक्षम होना चाहता हूं और इसे एक अच्छी एंटीअलाइज्ड पीएनजी फ़ाइल में प्रीप्रोसेस करना चाहता हूं जिसे मैं अपने मार्कडाउन में HTML <img> टैग के माध्यम से शामिल कर सकता हूं। लेकिन मुझे बिल्कुल पता नहीं है कि लाटेक्स का टुकड़ा कैसे लें और एक अच्छी छवि प्राप्त करें

  • सही बाउंडिंग बॉक्स है
  • एंटीअलाइज्ड है

मुझे पता है कि कैसे करना है DVI, PostScript, या PDF प्रारूपों में पूर्ण पृष्ठ प्राप्त करें।

मुझे यकीन है कि इस समस्या को संबोधित किया गया है, लेकिन मैं सही खोज शब्द अनुमान लगाने में सक्षम नहीं हूं। कोई सुझाव यह कैसे हल करें या मौजूदा समाधान को कहां देखना है?

संपादित करें : मैथटेक्स स्थापित करने के बाद, मैं कह सकता हूं कि कोड लचीला है, यह लिनक्स फाइल सिस्टम पदानुक्रम मानक का उल्लंघन करता है, और यह शौकिया काम है- उस शब्द की अच्छी और बुरी इंद्रियों दोनों में। कोड इतना जटिल है कि कोई स्पष्ट दोष नहीं है। मैं विकल्पों की तलाश करूँगा।

साथ ही, यह स्पष्ट है कि नीचे, समाधान dvipng पर आधारित हैं।

एक साल का लेटर : मुझे कभी भी निर्बाध एकीकरण नहीं मिला था जिसे मैं उम्मीद कर रहा था, लेकिन मैं अपनी खुद की रचना की एक लिपि पर लम्बा हूं। यह पता चला है कि dvipng बजाय यह dvips -E और ImageMagick के convert प्रोग्राम का उपयोग करना थोड़ा आसान है। लाभ स्केलिंग जैसी चीजों और पारदर्शी पृष्ठभूमि बनाने में आसानी का थोड़ा अधिक नियंत्रण है। उत्सुक इस उदाहरण का निरीक्षण कर सकते हैं।

मैं किसी के लिए इस समाधान की सिफारिश नहीं कर सकता। लेकिन मैं या तो मैथटेक्स की सिफारिश नहीं कर सकता।


MathJax प्रतिपादन समर्थन प्राप्त करने के लिए अपनी मार्कडाउन फ़ाइलों के शीर्ष पर निम्न कोड जोड़ें

<style TYPE="text/css">
code.has-jax {font: inherit; font-size: 100%; background: inherit; border: inherit;}
</style>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
    tex2jax: {
        inlineMath: [['$','$'], ['\\(','\\)']],
        skipTags: ['script', 'noscript', 'style', 'textarea', 'pre'] // removed 'code' entry
    }
});
MathJax.Hub.Queue(function() {
    var all = MathJax.Hub.getAllJax(), i;
    for(i = 0; i < all.length; i += 1) {
        all[i].SourceElement().parentNode.className += ' has-jax';
    }
});
</script>
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>

और फिर `$ x ^ 2 $` या `$$ x ^ 2 $$` अपेक्षित के रूप में प्रस्तुत किया जाएगा :-)

यदि आप ऑनलाइन वितरण का उपयोग नहीं करना चाहते हैं तो आप हमेशा MathJax का स्थानीय संस्करण इंस्टॉल कर सकते हैं, लेकिन आपको इसे स्थानीय वेबसर्वर के माध्यम से होस्ट करने की आवश्यकता हो सकती है।

अद्यतन : इन दिनों मैं सिर्फ pandoc बजाय pandoc उपयोग करता pandoc , लेकिन उपर्युक्त अभी भी उपयोगी है।


अरे, यह सबसे आदर्श समाधान नहीं हो सकता है, लेकिन यह मेरे लिए काम करता है। मैंने एक पाइथन-मार्कडाउन लाटेक्स एक्सटेंशन तैयार किया।

https://github.com/justinvh/Markdown-LaTeX

यह $ गणित $ और% पाठ% वाक्यविन्यास का उपयोग करके इनलाइन गणित और पाठ अभिव्यक्तियों के लिए समर्थन जोड़ता है। एक्सटेंशन एक प्रीप्रोसेसर है जो संबंधित समीकरणों / पाठ के लिए पीएनजी उत्पन्न करने के लिए लेटेक्स / डीवीपिंग का उपयोग करेगा और फिर बेस 64 बाहरी छवियों की बजाय छवियों को सीधे इनलाइन करने के लिए डेटा एन्कोड करेगा।

डेटा को तब एक सरल-सीमांकित कैश फ़ाइल में रखा जाता है जो अभिव्यक्ति को बेस 64 प्रतिनिधित्व में एन्कोड करता है। यह वास्तव में लेटेक्स को चलाने की संख्या को सीमित करता है।

यहाँ एक उदाहरण है:

%Hello, world!% This is regular text, but this: $y = mx + b$ is not.

उत्पादन:

$ markdown -x latex test.markdown
<p><img class='latex-inline math-false' alt='Hello, world!' id='Helloworld' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFwAAAAQBAMAAABpWwV8AAAAMFBMVEX///8iIiK6urpUVFTu7u6YmJgQEBDc3NxERESqqqqIiIgyMjJ2dnZmZmbMzMwAAAAbX03YAAAAAXRSTlMAQObYZgAAAVpJREFUKM9jYICDOgb2BwzYAVji8AQg8fb/PZ79u4AMvv0Mrz/gUA6W8F7AmcLAsJuBYT7Y1PcMfLiUgyWYF/B8Z2DYAVReABKrZ2DHpZwdopzrA0nKOeHKj66CKOcKPQJWwJo2NVFhfwCQyymhYwCUYD0avIApgYFh2927/QUcE3gDwMpvMhRCDJzNMIPhKZg7UW8DUOIMg9sCPgGo6e8ZODeAlAP9xLEArNy/IIwhAMx9D3IM+3cgi70BqnxZaNQFkHJWAQbeBrByjgURExaAuc9AyjnB5hjAlEO9ygVXzrplpskEMPchQvkBmGMcGApgjjkAVs7yhyWVAcwFK2f/AlJeAI0m5gMsEK+aMhQ6aDuA1DcDIZirBg7IOwxlB5g2QBJBF8OZVUz95hqfC3hOXWGYrwBSHskwk4EByGXab8QAlOBaGizFKYAtUlgUGEgBTCSpZnDCLQUA+y6MXeYnPDgAAAAASUVORK5CYII='> This is regular text, but this: <img class='latex-inline math-true' alt='y = mx + b' id='ymxb' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFIAAAAOBAMAAABOTlYkAAAAMFBMVEX///9ERETu7u4yMjK6urp2dnZUVFSIiIjMzMwQEBDc3NwiIiJmZmaYmJiqqqoAAADS00rKAAAAAXRSTlMAQObYZgAAAOtJREFUKM9jYCAACsCk4wYGgiABTLInEKuS+QGxKvkVGBj47jBwI8tcffI84e45BoZ7GVcLECo9751iWLeSoRPITBQEggMMDBy9sxj2MDgz8DIE8yCpPMxwjWFBGUMMkpFcbAEMvxjKGLgYxIE8NkHBiYIyQMY+hmoGhi0Mdsi2czawbGCQBTJ+ILvzE0MaA9MHIIWwnWE9A+sBpk8LGDgmMCnAVXJNYPgCJHhRQvUiA/cDXoECZx4DXoSZTBtYgaaEPw5AVnkOGBRc5xTcbsReQrL9+nWwyxbgC88DcJZ+QygDcYD1+QPiFAIAtLA8KPZOGFEAAAAASUVORK5CYII='> is not.</p>

जैसा कि आप देख सकते हैं कि यह एक वर्बोज़ आउटपुट है, लेकिन वास्तव में यह कोई मुद्दा नहीं है क्योंकि आप पहले ही मार्कडाउन का उपयोग कर रहे हैं :)


आप किस भाषा का उपयोग कर रहे हैं?

यदि आप रूबी का उपयोग कर सकते हैं, तो maruku को विभिन्न लेटेक्स-> MathML कनवर्टर्स का उपयोग करके गणित को संसाधित करने के लिए कॉन्फ़िगर किया जा सकता है। Instiki उपयोग करता है। गणित को परिवर्तित करने के लिए itex2MML का उपयोग करने के लिए PHPMarkdown का विस्तार करना भी संभव है। असल में, आप उचित बिंदुओं पर मार्कडाउन इंजन में अतिरिक्त कदम डालते हैं।

तो रूबी और PHP के साथ, यह किया जाता है। मुझे लगता है कि इन समाधानों को अन्य भाषाओं में भी अनुकूलित किया जा सकता है - मुझे पर्ल बाइंडिंग का उत्पादन करने के लिए itex2MML एक्सटेंशन भी मिला है।


आपको मल्टीमार्काउन देखना चाहिए http://fletcherpenney.net/multimarkdown/

इसमें मेटाडेटा (हेडर, कीवर्ड, दिनांक, लेखक, आदि), टेबल, एसिसीमाथ, मैथल, नरक के लिए समर्थन है, मुझे यकीन है कि आप वहां लेटेक्स गणित कोड को छू सकते हैं। यह मूल रूप से इन सभी अन्य उपयोगी सुविधाओं को जोड़ने के लिए मार्कडाउन का विस्तार है। यह एक्सएसएलटी का उपयोग करता है, ताकि आप आसानी से अपनी खुद की लाटेक्स शैलियों को चाबुक कर सकें, और इसे सीधे रूपांतरित कर सकें। मैं इसे हर समय इस्तेमाल करता हूं, और मुझे यह बहुत पसंद है।

मेरी इच्छा है कि मार्कडाउन में मल्टीमार्काउन शामिल होगा। यह बल्कि अच्छा होगा।

संपादित करें : मल्टीमार्काउन एचटीएमएल, लेटेक्स, और कुछ अन्य प्रारूपों का उत्पादन करेगा। एचटीएमएल आपकी पसंद की स्टाइल शीट के साथ आ सकता है। यह मैथएमएल में भी परिवर्तित हो जाएगा, जो फ़ायरफ़ॉक्स और सफारी / क्रोम में प्रदर्शित होता है, अगर मुझे सही याद है।


क्रैमडाउन ठीक वही करता है जो आप वर्णन करते हैं:

https://kramdown.gettalong.org/syntax.html#math-blocks

और यह मार्कडाउन की तुलना में अधिक विश्वसनीय और अच्छी तरह से परिभाषित तरीका है।


जब मैं teqhtml पाया तो मैं बिल्कुल वही चीज़ teqhtml रहा teqhtml । यह आसपास के पाठ के साथ लंबवत परिणामस्वरूप छवि को संरेखित करने के अच्छे बोनस के साथ छवियों के लिए $ और $$ समीकरणों का रूपांतरण करता है। बहुत सारे दस्तावेज़ नहीं हैं लेकिन यह काफी सरल है।

उम्मीद है कि यह कुछ भावी पाठकों की मदद करता है।


मैं आपके प्रश्न का उत्तर काउंटर-प्रश्न के साथ दूंगा ...

आप संगठन मोड के बारे में क्या सोचते हैं? यह मार्कडाउन के रूप में शुद्ध नहीं है, लेकिन यह मार्कडाउन जैसा है, और मुझे इसे काम करना आसान लगता है, और यह लेटेक्स को एम्बेड करने की अनुमति देता है। सी एफ http://www.gnu.org/software/emacs/manual/html_node/org/Embedded-LaTeX.html

परिशिष्ट भाग

यदि आपने संगठन मोड को नहीं देखा है, तो मार्कडाउन पर इसका सामान्य उद्देश्य "प्राकृतिक मार्कअप भाषा" के रूप में एक बड़ी ताकत है, अर्थात् तालिकाओं का उपचार। स्रोत:

| 1 | 0 | 0 |
| -1 | 1 | 0 |
| -1 | -1 | 1 |

यह दर्शाता है कि आप क्या सोचेंगे ...

और लेटेक्स को टेक्स-मोड के पूर्वावलोकन-लेटेक्स का उपयोग करके टुकड़ों में प्रस्तुत किया जाता है।


लुनमार्क कोड (इसके गीथब रेपो देखें) का उपयोग करके लूआ में मार्कडाउन को पार्स करना संभव है, जिसका अर्थ है कि मार्कडाउन को लूटेक्स में मैक्रोज़ द्वारा सीधे पार्स किया जा सकता है और पांडोक द्वारा समर्थित कई प्रारूपों में रूपांतरण का समर्थन करता है (यानी, लाइब्रेरी अच्छी तरह उपयुक्त है lualatex , context , मेटाफुन, सादा लुटेक्स, और texlua स्क्रिप्ट में उपयोग करने के लिए)।

इस परियोजना को पांडोक के लेखक जॉन मैकफर्लेन द्वारा शुरू किया गया था, और उपकरण के विकास ट्रैक पांडोक की काफी बारीकी से और समान (यानी उत्कृष्ट) गुणवत्ता के हैं।

खलील होस्नी ने एक सुविधाजनक मॉड्यूल लिखा, सुविधाजनक मैक्रो समर्थन प्रदान करता है। माइकल का जवाब क्या मार्कडाउन समर्थन के साथ कोई पैकेज है? प्रश्न लेटेक्स के लिए समान समर्थन प्रदान करने वाला कोड देता है।


शायद mathJAX टिकट है। यह jsMath , 2004 की पुरानी जावास्क्रिप्ट लाइब्रेरी पर बनाया गया है।

5-फरवरी KaTeX तक मैं KaTeX की सिफारिश करने के लिए स्विच KaTeX - खान अकादमी से सबसे अधिक प्रदर्शनकर्ता जावास्क्रिप्ट लाटेक्स लाइब्रेरी।


हाँ, लेकिन आपको इसे थोड़ा सा हैक करना होगा। मैंने एक फ़िल्टर लिखा है जो एक mimetex.cgi स्क्रिप्ट पर उपयुक्त छवि टैग के साथ लेटेक्स टैग $\some\inline\latex$ या $$\some\equation$$ को mimetex.cgi । इसमें 5 मिनट लग गए।

चेतावनी: शानदार रूप से बदसूरत ...

#!/usr/bin/env python
import sys, markdown,re

MIMETEX_LOC="http://some.server.com/cgi-bin/mimetex.cgi"

def sanitizeLatex(text):
    return re.sub(r"\\",r"%5C", text)

def wrapLatexBlock(text):
    return '<img alt="equation" class="block" src="%s?%s"></img>'%(MIMETEX_LOC,text)

def wrapLatexInline(text):
    return '<img alt="equation" class="inline" src="%s?%s"></img>'%(MIMETEX_LOC,text)

def prepLatexBlock(matchobj):
    return wrapLatexBlock(sanitizeLatex(matchobj.group()[2:-2]))

def prepLatexInline(matchobj):
    return wrapLatexInline(sanitizeLatex(matchobj.group()[1:-1]))


if __name__ == "__main__":
    # initialise markdown
    md=markdown.Markdown()
    raw_md=open(sys.argv[1],"r").read()

    ##
    # deal with embedded latex
    ##
    raw_md=re.sub(r'\$\$(.*?)\$\$',prepLatexBlock, raw_md)
    raw_md=re.sub(r'\$(.*?)\$',prepLatexInline, raw_md)

    ##
    # once latex is parsed, convert md to html
    ##
    main_html=md.convert(raw_md)

    # hey presto!
    print(main_html)

बेशक, आपको उचित css खुद को .block और .inline छवियों के लिए परिभाषित करना होगा ...





mathematical-typesetting