मैं मार्कडाउन के साथ लाटेक्स को कैसे मिला सकता हूं? [बन्द है]


181

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

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

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

  • सही बाउंडिंग बॉक्स है
  • प्रतिशोधी है

सभी मुझे पता है कि डीवीआई, पोस्टस्क्रिप्ट, या पीडीएफ प्रारूपों में पूर्ण पृष्ठ कैसे प्राप्त होते हैं।

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


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

इसके अलावा, यह स्पष्ट है कि तल पर, समाधान आधारित हैं dvipng


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

मैं किसी को भी इस समाधान की सिफारिश नहीं कर सकता। लेकिन मैं MathTeX की सिफारिश नहीं कर सकता।


अच्छे प्रश्न हैं। मैंने अपनी तैयारी सीधे LaTeX में की है, लेकिन यह उस उद्देश्य के लिए थोड़ी सी चिंताजनक है, यहां तक ​​कि auctex का उपयोग करते हुए भी ...
--- पूर्व-मॉडरेटर ने बिल्ली का बच्चा

6
क्या आपने पंडोक की कोशिश की? न केवल यह स्वयं मार्कडाउन + लाटेक्स को (जो भी) रूपांतरित करता है, बल्कि इसकी नवीनतम रिलीज के साथ, यह आपको स्क्रिप्ट लिखने देता है जो पार्स ट्री पर काम करता है, इसलिए आप आसानी से वही कर सकते हैं जो आप चाहते हैं।
श्रीवत्सआर

@ श्रीवत्सआर मैं पंडोक और मल्टीमार्कडाउन दोनों की कोशिश करने जा रहा हूं, शायद इस गर्मी में।
नॉर्मन रैमसे

4
इतना जटिल है कि कोई स्पष्ट दोष नहीं हैं - मैंने इस मनभावन संदर्भ को पहली बार याद किया जब मैंने इसे पढ़ा।
चार्ल्स स्टीवर्ट

6
क्या कोई समझा सकता है कि यह प्रश्न विषय कैसे है?
अन्नपूर्णय

जवाबों:



41

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

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


संबंधित: stackoverflow.com/questions/11256433/… मैं भी Katex सर्वर पक्ष पर विचार कर रहा हूँ, उदाहरण के लिए github.com/asciidoctor/asciidoctor/pull/3338
Ciro Santilli 郝海东 .com/ .com/ 事件 法轮功 事件

25

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="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/MathJax.js?config=TeX-AMS_HTML-full"></script>

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

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

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


भविष्य से ध्यान दें: cdn.mathjax.org अपने अंत के जीवन के पास है, माइग्रेशन टिप्स के लिए mathjax.org/cdn-shutting-down की जाँच करें (और शायद भविष्य के पाठकों के लिए अपनी पोस्ट को अपडेट करें)।
पीटर क्रुतज़बर्गर

12

मैं आपके सवाल का जवाब एक जवाबी सवाल के साथ दूंगा ...

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

परिशिष्ट भाग

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

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

प्रतिनिधित्व करता है कि तुम क्या सोचते हो ...

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


1
मैंने ऑर्ग-मोड को देखा, और यद्यपि एम्बेडेड लाटेक्स बहुत अच्छी तरह से किया गया लगता है, यह जो मैं चाहता हूं उसके लिए कुल ओवरकिल जैसा दिखता है (एमएसीएस का विशिष्ट)। दिलचस्प है, मैं ध्यान देता हूं कि अंतर्निहित रेंडरिंग इंजन फिर से है dvipng। तालिका की समस्या एक महत्वपूर्ण है, लेकिन मैंने इसे हल करने के लिए पहले से ही एक प्रीप्रोसेसर लिख दिया है :-) +1
नॉर्मन रैमसे

8

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

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

काश मार्कडाउन सिर्फ मल्टीमर्कडाउन को शामिल करता। बल्कि अच्छा होगा।

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


जितना मैं चाहता हूं उससे अधिक जटिल लगता है, और यह स्पष्ट से कम है कि अभिव्यंजक शक्ति क्या है (MathML के अलावा अन्य संदर्भ 0 द्वारा शामिल है)।
नॉर्मन रैमसे

6

RStudio के पास एक अच्छा मुफ्त IDE है जो मार्केडाउन और LaTeX के लिए अनुमति देता है।


लेकिन क्या यह आपको उन्हें उसी दस्तावेज़ / वाक्य में संयोजित करने देता है, जैसा कि ओपी करने के लिए कह रहा है?
मैट

आप मार्कडाउन मोड में इक्वेशंस को एम्बेड कर सकते हैं। Rstudio.com/ide/docs/authoring/use_markdown_equations
रोमन लुसट्रिक

6

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

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

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


ऐसा लगता है कि यह पृष्ठ इस समय नीचे है, लेकिन यहाँ पृष्ठ है कि यह 301 पुनर्निर्देशन के लिए उपयोग किया जाता है वेनबैक मशीन के अनुसार: kramdown.gettalong.org:80/
Derwent

5

आपको mimeTeX उपयोगी लग सकता है ।


2
उत्तराधिकारी mathTeX और भी बेहतर दिखता है --- और यह स्पष्ट है कि वर्कहॉर्स है dvipng। एक महान सूचक के लिए धन्यवाद! +1
नॉर्मन रैमसे

1
अब मैं KaTeX की सिफारिश करूंगा - खान अकादमी से सबसे अधिक प्रदर्शन करने वाली जावास्क्रिप्ट लाटेक्स लाइब्रेरी।
duffymo

लिंक को बदल दिया गया: forkosh.com/mimetex.html
quine

3

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

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

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

फिर डेटा को एक सरल-सीमांकित कैश फ़ाइल में डाला जाता है जो कि अभिव्यक्ति को बेस 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>

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


2

हां, लेकिन आपको इसे स्वयं ही हैक करना होगा। मैंने एक फ़िल्टर लिखा है जो लेटेक्स टैग $\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)

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


2

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

क्या कोई कारण है कि आप छवियों को क्यों पसंद करेंगे?


1
कुछ स्टैक एक्सचेंज साइटों Math.Se, Physics.SE, आदि ... करते MathJax अब, का उपयोग हालांकि प्रबंधन का मानना है कि MathJax जहां बिल्कुल जरूरी छोड़कर तैनात किया जा करने के लिए बहुत भारी है। लेकिन यह प्रस्तुतियों पर लागू नहीं होता है क्योंकि इसे ब्राउज़र में चलाने के लिए कार्यों की आवश्यकता होती है।
dmckee --- पूर्व मॉडरेटर

1

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

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

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


1

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

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


1

क्षमा करें वास्तव में एक पुराने धागे को जोड़ने के लिए , लेकिन मैं कुछ वर्षों से जेमडॉक का उपयोग कर रहा हूं और यह वास्तव में उत्कृष्ट है।


1

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

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

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.