स्रोत कोड LaTeX में हाइलाइटिंग


196

मुझे LaTeX में स्रोत कोड को उजागर करने की आवश्यकता है। पैकेज listingsज्यादातर उपयोग-मामलों के लिए सबसे अच्छा विकल्प लगता है और मेरे लिए यह अब तक था।

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

आवश्यक परिणाम

listingsतार के लिए मनमाना सीमांकक के साथ सामना नहीं कर सकते। निम्नलिखित मान्य रूबी कोड पर विचार करें:

s = %q!this is a string.!

यहां, !लगभग किसी भी सीमांकक द्वारा प्रतिस्थापित किया जा सकता है।

(जो listingsयूनिकोड को संभाल नहीं सकता है वह भी काफी अप्रिय है, लेकिन यह एक और मुद्दा है।)

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

अन्य थ्रेड्स ने पाइएशंस का उपयोग करने का सुझाव दिया है जो लाटेक्स आउटपुट का उत्पादन कर सकता है। texmentsसंक्रमण को कम करने के लिए एक पैकेज - - भी है ।

हालांकि, इस व्यथा में सुविधाओं का अभाव है। विशेष रूप से, मैं listings-स्टाइल लाइन नंबरिंग, स्रोत कोड लाइन संदर्भों और स्रोत कोड (विकल्प texclऔर mathescapeइन listings) में LaTeX को एम्बेड करने की संभावना में दिलचस्पी रखता हूं ।

एक उदाहरण के रूप में, यहां एक स्रोत कोड टाइपसेट है, listingsजिसके साथ कुछ चीजें दिखाई देती हैं जिन्हें एक प्रतिस्थापन भी प्रदान करना चाहिए:

LaTeX लिस्टिंग उदाहरण: बग़ल में इसके अलावा ["बग़ल के अलावा" बिट ट्विगलिंग हैक्स से संशोधित]


यदि आप बाहरी उपकरणों जैसे कि मवाद में लाने के लिए अनिच्छुक नहीं हैं, तो अपने दस्तावेज़ के लिए सिर्फ एक मेकफाइल क्यों न लिखें?
मीका

6
क्या यह tex.stackexchange.com पर नहीं जाना चाहिए ? ^ ^
Matthias

1
@ माथियास पक्का नहीं। जब मैंने इसे पोस्ट किया था तो कोई टेक्स नहीं था। लेकिन अब यह यहाँ काफी उपयोगी है - इस प्रश्न की जबरदस्त गूंज है, जबकि TeX.SE पर अब तक किसी ने भी ऐसा ही प्रश्न पोस्ट नहीं किया है। इसके अलावा, यह वास्तव में प्रोग्रामिंग और प्रोग्रामिंग टूल से संबंधित है, इसलिए मुझे लगता है कि प्रोग्रामर ऐसे लोग हैं जो इससे लाभान्वित होते हैं।
कोनराड रुडोल्फ

1
उन लोगों के लिए, जो वर्तमान में लिख रहे दस्तावेज़ के लिए LaTeX को भूल सकते हैं: ध्यान दें कि Office Word या LibreOffice Writer के साथ, आप बस अपने कोड को कॉपी करें / पेस्ट करें जैसे कि Eclipse से वहाँ और अपने रंगों को सुरक्षित रखें !!
मोहम्मदी

3
@MemoryLeaks मैं नहीं यकीन है कि यह सलाह बहुत उपयोगी है, जो कर रहा हूँ: कार्यालय सॉफ्टवेयर (LaTeX के लिए एक वैध विकल्प है, जो नहीं है नहीं एक कार्यालय सॉफ्टवेयर, यह एक डेस्कटॉप प्रकाशन प्रणाली है, जो, संक्षेप में, इसका मतलब है कि यह बहुत बेहतर टाइपोग्राफी प्रदान करता है , इसके अलावा कार्यालय सॉफ्टवेयर पर अपने अन्य सभी लाभों से)।
कोनराड रूडोल्फ

जवाबों:


353

दिल के लिए नॉर्मन की सलाह ले रहा है, मैं एक साथ एक समाधान का उपयोग किया जाता है (एक काट दिया गया है समझौता पर प्रकाश डाला के लिए) Pygments और फोड़ के बिना संभव के रूप में कई सुविधाओं के रूप में में धक्का दे दिया ;-)

मैंने एक लेटेक्स पैकेज भी बनाया है, एक बार जब मेरा पियर्सन पैच 1.2 संस्करण में जारी किया गया था ...

पेश ढाला

टकसाल एक पैकेज है जो LaTeX में हाइलाइट किए गए शीर्ष-वाक्यविन्यास को प्रदान करने के लिए पियाजेंस का उपयोग करता है। उदाहरण के लिए, यह निम्न आउटपुट की अनुमति देता है।

फैंसी लाटेक्स उदाहरण

उपरोक्त कोड को पुन: पेश करने के लिए यहां एक न्यूनतम फ़ाइल है (ध्यान दें कि यूनिकोड वर्णों को XeTeX की आवश्यकता हो सकती है)!

\documentclass[a4paper]{article}
\usepackage{fontspec}
\usepackage{minted}

\setsansfont{Calibri}
\setmonofont{Consolas}

\begin{document}
\renewcommand{\theFancyVerbLine}{
  \sffamily\textcolor[rgb]{0.5,0.5,0.5}{\scriptsize\arabic{FancyVerbLine}}}

\begin{minted}[mathescape,
               linenos,
               numbersep=5pt,
               gobble=2,
               frame=lines,
               framesep=2mm]{csharp}
  string title = "This is a Unicode π in the sky"
  /*
  Defined as $\pi=\lim_{n\to\infty}\frac{P_n}{d}$ where $P$ is the perimeter
  of an $n$-sided regular polygon circumscribing a
  circle of diameter $d$.
  */
  const double pi = 3.1415926535
\end{minted}
\end{document}

यह निम्न कमांड का उपयोग करके टाइपसेट हो सकता है:

xelatex -shell-escape test.tex

(लेकिन खनन भी साथ काम करता है latexऔर pdflatex...)

minted.styसमान काम करता है, texments.styलेकिन अतिरिक्त सुविधाओं की अनुमति देता है।

इसे कैसे प्राप्त करें

एक बार फिर, नॉर्मन को इस पैकेज के निर्माण के लिए प्रेरित करने के लिए धन्यवाद।


19
LaTeX के साथ pyolution का उपयोग कैसे करें, और मेरे अपने समाधान को एक साथ हैक करने की कोशिश करने के अधिक घंटों के लिए खोज करने के घंटों के बाद, यह सबसे अच्छा मैंने पाया है। बेहतर अभी तक, यह वास्तव में काम करता है। इसके लिए धन्यवाद।
sykora

2
यहाँ सिर्फ एक तरीके से आपके द्वारा किए गए काम की सराहना करने के लिए;)
फिलिप डुपनोविक

4
@Paul: यह सच है कि पूरी बात विंडोज पर काफी गड़बड़ है। :-( उम्मीद है कि, प्यूएशंस का अगला संस्करण कुछ हद तक इसे समाप्त कर देगा, लेकिन ऐसे लोग जो अक्सर पायथन के साथ काम नहीं करते हैं (और इसलिए easy_install) प्रक्रिया कभी भी बहुत चिकनी नहीं होगी।
कोनराड रूडोल्फ


1
@ पाओलो धन्यवाद। मैं पैकेज के सभी उल्लेखों को पढ़ने की कोशिश करता हूं (मुझे Google अलर्ट मिला है) लेकिन मैं हमेशा सफल नहीं होता। आपके द्वारा उल्लिखित प्रश्न मैंने वास्तव में पढ़ा है (जाहिरा तौर पर: मैंने इसे उतारा है लेकिन मुझे याद नहीं है) लेकिन यह बिल्कुल सीधा नहीं है। इसके लिए TikZ का उपयोग करते हुए “Ab” एक खराब हैक की तरह लगता है…
कोनराड रूडोल्फ

6

TeX (प्रसिद्ध) ट्यूरिंग-पूर्ण है, लेकिन मुझे पूरा यकीन है कि आपको यह एक्सटेंशन स्वयं लिखना होगा। प्रलेखन यह स्पष्ट करता है कि मूल लेखक ने listingsइसे 2004 में अनाथ कर दिया था, और यह 2006 से अद्यतन नहीं किया गया है। पैकेज को संख्यात्मक शाब्दिक स्वरूपण को ओवरराइड करने के लिए डिज़ाइन नहीं किया गया था, लेकिन आप इसे बदलकर संशोधित करने में सक्षम हो सकते हैं। की परिभाषा \lst@ProcessDigit। यदि वह काम नहीं करता है, तो आपको विस्तार से समझना होगा कि "पहचानकर्ता शैली" विकल्प कैसे काम करते हैं, और आपको अपने क्रांतिक संकेतों के लिए उस मशीनरी को डुप्लिकेट करना होगा।

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


मैं बाहरी साधनों को पेश करने के लिए बिल्कुल अनिच्छुक नहीं हूं - वास्तव में, मुझे लगता है कि प्यूऐस का उपयोग करना शायद सबसे अच्छा समाधान है। सवाल यह है कि इसे स्मार्ट तरीके से कैसे किया जाए ताकि मैं अभी भी लाटेकस से बच सकूं और \labelकोड के अंदर ही रहूं ।
कोनराड रुडोल्फ

बदलने के लिए listings, मेरे पास पहले से ही इसके स्रोत पर एक नज़र है - और दुर्भाग्य से, मैं इसे बिल्कुल नहीं समझता। मेरे TeX कौशल उस स्तर के पास नहीं हैं। अब तक, मैंने कभी भी TeX के LaTeX सबसेट का उपयोग किया है।
कोनराड रुडोल्फ

1
मैं कहूंगा कि किसी बाहरी टूल को पेश करने के साथ सबसे बड़ा मुद्दा यह है कि यदि आप प्रकाशित कर रहे हैं। बहुत सारे जर्नल पब्लिशर्स (कफ-खांसी SPRINGER, और अन्य) को कच्चे लाटेक्स में जमा करने की आवश्यकता होती है, जो तब उनके सर्वर पर संकलित होती है। यह कहने की आवश्यकता नहीं है, यदि आपका 3-पार्टी टूल उनके सर्वर पर नहीं है, तो आप SOL हैं जब तक कि आप पूर्व-प्रक्रिया नहीं करते हैं (जो कि टेक्स ड्राइव देने की उपयोगिता को सबसे अधिक हरा देता है)।
Namey

यदि दस्तावेज़ सही है, तो सूचीकरण पैकेज अभी भी बना हुआ है - हालाँकि अनुरक्षक बदल गया है और इसे
बगफिक्स

1
@ नेमी, सिर्फ़ एक डेटा-पॉइंट: मैं बस mintedस्प्रिंगर के एलएनसीएस प्रकाशन-प्रक्रिया के माध्यम से एक पेपर का सफलतापूर्वक उपयोग करने में कामयाब रहा ।
वोल्कर स्टोलज़

3

यह एक पैकेज है जो सिंटेक्स हाइलाइटिंग के साथ स्रोत कोड को TeX और LaTeX में परिवर्तित करता है। कस्टम प्रोग्रामिंग लैंग्वेज की परिभाषाओं को आसानी से जोड़ना संभव है।

हाइलाइट 100 प्रोग्रामिंग भाषाओं का समर्थन करता है और इसमें 50 रंग थीम शामिल हैं। इसमें कोड रिफॉर्मिंग और इंडेंटिंग की सुविधा है।

मैंने यह जानने के लिए इसका उपयोग नहीं किया है कि यह कैसे काम करता है, लेकिन कोई और मुझे पता है कि यह बहुत अच्छी तरह से काम करता है। अगर मुझे मौका मिलता है, तो मैं खुद इसे आज़माऊंगा और देखूंगा।


1
highlightहालाँकि, पाइलेशन की सभी समस्याओं को साझा करता है। विशेष रूप से, यह एक LaTeX पैकेज नहीं है , बावजूद इसके विवरण क्या कहता है। यह केवल एक स्टैंड-अलोन प्रोग्राम है। समस्या, बस Py Py के साथ, यह है कि इसे LaTeX के भीतर से सार्थक रूप से कैसे उपयोग किया जाए और इसमें सभी अच्छी चीजें उपलब्ध हों listings
कोनराड रुडोल्फ 12
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.