इंडेंटेशन के साथ इस LaTeX दस्तावेज़ में कोड सम्मिलित करना


426

मैं एक LaTeX दस्तावेज़ में कोड कैसे डालूं? क्या कुछ ऐसा है:

\begin{code}## Heading ##
...
\end{code}

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


एक सटीक डुप्लिकेट नहीं, लेकिन उत्तर एक ही जमीन को कवर करते हैं: देखें stackoverflow.com/questions/741985/…
चार्ल्स स्टीवर्ट

मेरे यहाँ एक अनुवर्ती प्रश्न भी है: stackoverflow.com/questions/3408996/…
साठफुटर्सडूड

जवाबों:


630

listingsपैकेज का उपयोग करें ।

LaTeX हेडर के लिए सरल विन्यास (पहले \begin{document}):

\usepackage{listings}
\usepackage{color}

\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}

\lstset{frame=tb,
  language=Java,
  aboveskip=3mm,
  belowskip=3mm,
  showstringspaces=false,
  columns=flexible,
  basicstyle={\small\ttfamily},
  numbers=none,
  numberstyle=\tiny\color{gray},
  keywordstyle=\color{blue},
  commentstyle=\color{dkgreen},
  stringstyle=\color{mauve},
  breaklines=true,
  breakatwhitespace=true,
  tabsize=3
}

आप दस्तावेज़ के बीच में डिफ़ॉल्ट भाषा बदल सकते हैं \lstset{language=Java}

दस्तावेज़ में उपयोग का उदाहरण:

\begin{lstlisting}
// Hello.java
import javax.swing.JApplet;
import java.awt.Graphics;

public class Hello extends JApplet {
    public void paintComponent(Graphics g) {
        g.drawString("Hello, world!", 65, 95);
    }    
}
\end{lstlisting}

यहाँ परिणाम है:

उदाहरण छवि


3
आपके पास कोड से संबंधित एक अनुवर्ती प्रश्न है। मौका मिलने पर एक नज़र डालें: stackoverflow.com/questions/3408996/…
साठफुटर्सडूड

1
क्या कोड की लाइनों के बीच जगह कम करने का कोई तरीका है?
सुखवीर

क्या कोड स्निपेट के नीचे छोटे पाठ को जोड़ना संभव है, जो लेटेक्स में एक आकृति के तहत लिखे गए पाठ के समान है?
ब्रायन जे

@ ब्रायन मुझे इसकी जानकारी नहीं है। शायद अंदर कोड होने के figureकारण प्रभाव प्राप्त कर सके।
21

मैंने सुना है यह पैकेज अब अप्रचलित है!
xxx ---

165

तुम भी शब्दशः पर्यावरण का उपयोग कर सकते हैं

\begin{verbatim}
your
code
example
\end{verbatim}

57
शब्दशः वातावरण के अंदर टैब का उपयोग करने के साथ एक समस्या है। यदि टैब "स्थान" में परिवर्तित हो जाते हैं तो समस्या गायब हो जाती है।
मिडीबी

1
यह उदाहरण पाठ फ़ाइल सामग्री दिखाने के लिए अच्छा है (उदाहरण के लिए, किसी प्रोग्राम को पढ़ने / संसाधित करने के लिए शाब्दिक डेटा)।
nalyd88

दो कॉलम लेख के लिए, यह मार्जिन को अच्छी तरह से नहीं संभालता है।
सज्जाद हिसैन खान

115

इनलाइन कोड जोड़ने का तरीका यहां दिया गया है:

आप इनलाइन कोड के साथ {\tt code }या जोड़ सकते हैं \texttt{ code }। यदि आप इनलाइन कोड को प्रारूपित करना चाहते हैं, तो अपनी खुद की कमांड बनाना सबसे अच्छा होगा

\newcommand{\code}[1]{\texttt{#1}}

इसके अलावा, ध्यान दें कि कोड ब्लॉक को अन्य फाइलों से लोड किया जा सकता है

\lstinputlisting[breaklines]{source.c}

breaklinesआवश्यकता नहीं है, लेकिन मुझे यह उपयोगी लगता है। ध्यान रखें कि आपको इसके लिए \usepackage{ लिस्टिंग निर्दिष्ट करनी होगी }

अद्यतन: लिस्टिंग पैकेज में \lstinlineकमांड भी शामिल है , जिसमें कमांड \lstlistingऔर \lstinputlistingकमांड के रूप में एक ही सिंटैक्स हाइलाइटिंग विशेषताएं हैं (कॉन्फ़िगरेशन के लिए क्लाउडेंजर का उत्तर देखें)। जैसा कि कुछ अन्य जवाबों में उल्लेख किया गया है, वहाँ भी खनन पैकेज है, जो \mintinlineकमांड प्रदान करता है । जैसे \lstinline, \mintinlineएक नियमित टकसाल कोड ब्लॉक के रूप में हाइलाइटिंग समान सिंटैक्स प्रदान करता है:

\documentclass{article}

\usepackage{minted}

\begin{document}
  This is a sentence with \mintinline{python}{def inlineCode(a="ipsum)}
\end{document}

1
इनलाइन कोड के लिए कोई बेहतर तरीका है जो कीवर्ड रंगों आदि को सक्रिय करता है?
नैनो

हाँ। मैंने उन्हें चर्चा करने के लिए अपना उत्तर अपडेट कर दिया है।
एलन

आप इसे और अधिक पठनीय बनाने के लिए रिक्ति / टैब कैसे डालते हैं?
चार्ली पार्कर

32

विशिष्ट पैकेज जैसे कि minted, जो कि स्वरूपण करने के लिए पियाजेन्स पर निर्भर करता है, listingsपैकेज पर विभिन्न लाभ प्रदान करता है। mintedमैनुअल से उद्धृत करने के लिए ,

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


1
मैंने खनन करने की कोशिश की है, प्रलेखन काफी आगे है। डिफ़ॉल्ट शैली अच्छी छोड़ दी जाती है।
user2262504

5
यह कई उपयोगकर्ताओं के लिए एक असंतोषजनक समाधान हो सकता है, क्योंकि बाह्य कॉल के लिए प्यूएर्सिक की आवश्यकता होती है। विशेष रूप से, -shell-escapeनिर्देश के साथ लेटेक्स को कॉल करने की आवश्यकता है, सबसे अच्छे रूप में, बिल्ड सिस्टम को बाहर करने के लिए एक मामूली संशोधन, और कुछ उपयोगकर्ताओं की सुरक्षा वरीयताओं के साथ सबसे खराब, असंगत है।
केडीएन

12

पुदीना का प्रयोग करें ।

यह एक ऐसा पैकेज है जो शक्तिशाली पायरेसी लाइब्रेरी का उपयोग करके LaTeX में अभिव्यंजक वाक्यविन्यास को उजागर करता है । पैकेज भी फैंसीवेरब का उपयोग करके हाइलाइट किए गए स्रोत कोड आउटपुट को अनुकूलित करने के लिए विकल्प प्रदान करता है ।

यह किसी भी अन्य पैकेज की तुलना में बहुत अधिक विकसित और अनुकूलन योग्य है!


हालांकि, जैसा कि पहले ही एक समान जवाब पर उल्लेख किया गया है, -shell-escapeकुछ लोगों के लिए चूसना हो सकता है।
ईगोर हंस


6

चूँकि अभी तक इसका उल्लेख यहाँ नहीं किया गया है, इसलिए यह एक और विकल्प, पैकेज spverbatim(कोई सिंटैक्स हाइलाइटिंग) जोड़ने के लायक हो सकता है :

\documentclass{article}
\usepackage{spverbatim}

\begin{document}

\begin{spverbatim}
  Your code here
\end{spverbatim}

\end{document}

इसके अलावा, यदि सिंटैक्स हाइलाइटिंग की आवश्यकता नहीं है, तो पैकेज alltt:

\documentclass{article}
\usepackage{alltt}

\begin{document}

\begin{alltt}
  Your code here
\end{alltt}

\end{document}

1
यह कमोबेश मैं क्या चाहता हूं, लेकिन मैं टैब के साथ इंडेंट नहीं कर सकता। आप कैसे इंडेंट करते हैं / क्या एक समान पैकेज है जो आसान इंडेंटेशन की अनुमति देता है?
दारोक्रिथिया

1
@Darokrithia मैंने अपना उत्तर संपादित किया: क्या आप इंडेंटेशन की जांच / सामना कर सकते हैं? :)
मैटअलीग्रो

1
यह काम नहीं लगता है। मैं आपके द्वारा उपयोग किए जा रहे कोड को भेज सकता हूं, लेकिन टिप्पणियों में स्वरूपण नष्ट हो जाता है। BTW मैंने एक अलग उत्तर का उपयोग किया और यह ठीक काम किया, लेकिन मुझे ऐसा लगता है कि भविष्य के पाठकों के लिए अभी भी तय होना चाहिए।
Darokrithia

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