2010-04-09 11 views
11

में लिस्टिंग का उपयोग कर उद्देश्य सी कोड स्वरूपण करना मुझे आश्चर्य है कि किसी को लाइटिक्स के listings पैकेज का उपयोग करके उद्देश्य सी कोड को प्रारूपित करने के लिए कैसे माना जाता है? मुझे पता है कि भाषा सी (उद्देश्य) का समर्थन करती है, तो मैं इसे \lstsetlanguage विकल्प में कैसे सेट करूं?लाटेक्स

धन्यवाद

उत्तर

10
इस तरह

:

\documentclass{article} 

\usepackage{listings} 

\begin{document} 

\lstset{language=[Objective]C, breakindent=40pt, breaklines} 

\begin{lstlisting} 
@interface classname : superclassname { 
    // instance variables 
} 
+classMethod1; 
+(return_type)classMethod2; 
+(return_type)classMethod3:(param1_type)param1_varName; 

-(return_type)instanceMethod1:(param1_type)param1_varName :(param2_type)param2_varName; 
-(return_type)instanceMethod2WithParameter:(param1_type)param1_varName andOtherParameter:(param2_type)param2_varName; 
@end 
\end{lstlisting} 

\end{document} 

विस्तृत परिचय: http://mirror.hmc.edu/ctan/macros/latex/contrib/listings/listings.pdf

+2

सी के लिए है कि उद्देश्य सी के लिए, आप का उपयोग करना चाहें '\ lstset {भाषा = [उद्देश्य] सी}'। –

+0

धन्यवाद - मुझे कोई समस्या है हालांकि, मेरा स्रोत काफी लंबा है, और पृष्ठ की चौड़ाई से बाहर जा रहा है - अत्यधिक समस्याएं, क्या इसे हल किया जा सकता है? धन्यवाद – joec

+0

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

4

हालांकि इस सवाल का जवाब ओपी के सवाल से प्रति का जवाब दे नहीं है, मैं दूसरों आंकड़ा ऑब्जेक्टिव-सी listings की तलाश में इस सवाल से संबंधित जानकारी ठोकर खाई जाएगी।

नीचे listings\lstdefinelanguage उद्देश्य-सी 2.0, जीएनयू 99, और एएनएसआई सी 99 के लिए है। जबकि listings में सी और उद्देश्य-सी दोनों के लिए परिभाषाएं शामिल हैं, परिभाषाएं पुराने C89 मानक और उद्देश्य-सी 1.0 के लिए हैं। नीचे दिया गया संस्करण सी 99 जोड़ता है, जीएनयू 99 को सी 99 में जोड़ता है, और फिर उद्देश्य-सी (2.0) को जीएनयू 99 में जोड़ता है।

यदि आप "सामान्य" फ़ॉन्ट शैली से अलग कीवर्ड के लिए फ़ॉन्ट शैली का उपयोग करते हैं तो आप शायद एक अंतर देखने जा सकते हैं।

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

 
\lstdefinelanguage[Objective]{C}[GNU99]{C} 
    {morekeywords={@catch,@class,@encode,@end,@finally,@implementation,% 
     @interface,@private,@protected,@protocol,@public,@selector,% 
     @synchronized,@throw,@try,BOOL,Class,IMP,NO,Nil,SEL,YES,_cmd,% 
     bycopy,byref,id,in,inout,nil,oneway,out,self,super,% 
     % The next two lines are Objective-C 2 keywords. 
     @dynamic,@package,@property,@synthesize,readwrite,readonly,% 
     assign,retain,copy,nonatomic% 
     },% 
    moredirectives={import}% 
    }% 

\lstdefinelanguage[GNU99]{C}[99]{C} 
    {morekeywords={asm,__asm__,__extension__,typeof,__typeof__}% 
    }% 

\lstdefinelanguage[99]{C}% 
    {morekeywords={_Bool,_Complex,_Imaginary,auto,break,case,char,% 
     const,continue,default,do,double,else,enum,extern,float,for,% 
     goto,if,inline,int,long,register,restrict,return,short,signed,% 
     sizeof,static,struct,switch,typedef,union,unsigned,void,volatile,% 
     while},% 
    sensitive,% 
    morecomment=[s]{/*}{*/},% 
    morecomment=[l]//,% 
    morestring=[b]",% 
    morestring=[b]',% 
    moredelim=*[directive]\#,% 
    moredirectives={define,elif,else,endif,error,if,ifdef,ifndef,line,% 
     include,pragma,undef,warning}% 
    }[keywords,comments,strings,directives]% 
+1

मैं इसे \ start {lstlisting} में कैसे उपयोग करता हूं? – CarlJ

+0

@meccan: दस्तावेज़ की शुरुआत में इसे \ lstset कथन के पीछे जोड़ें – brainray