2010-04-09 34 views

Trả lời

10

Như thế này:

\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} 

giới thiệu chi tiết: http://mirror.hmc.edu/ctan/macros/latex/contrib/listings/listings.pdf

+2

Đó là C. Đối với Objective C, bạn muốn sử dụng '\ lstset {language = [Mục tiêu] C}'. –

+0

cảm ơn - tôi có một vấn đề mặc dù, nguồn của tôi là khá dài, và đang đi ra khỏi chiều rộng của trang - Vấn đề quá mức, điều này có thể được giải quyết? cảm ơn – joec

+0

@ Joachim, tôi chưa bao giờ sử dụng Objective C và vì joec đặt nó giữa dấu ngoặc đơn, tôi đoán các ngôn ngữ không khác nhiều lắm. Tôi đã sai! :). Lấy một số Objective C từ mạng và cố định ví dụ của tôi. Cảm ơn. –

4

Mặc dù câu trả lời này không trả lời câu hỏi của OP cho mỗi gia nhập, tôi tìm những người khác tìm kiếm Objective-C listings thông tin liên quan sẽ vấp ngã trên câu hỏi này.

Dưới đây là listings\lstdefinelanguage cho Mục tiêu-C 2.0, GNU99 và ANSI C99. Trong khi listings bao gồm các định nghĩa cho cả C và Objective-C, các định nghĩa dành cho chuẩn C89 cũ và Objective-C 1.0. Phiên bản bên dưới thêm C99, thêm GNU99 vào C99, và sau đó thêm Objective-C (2.0) vào GNU99.

Có thể bạn sẽ chỉ thấy sự khác biệt nếu bạn sử dụng kiểu phông chữ cho các từ khóa khác với kiểu phông chữ "bình thường".

Tôi là tác giả của mã bên dưới (ngoại trừ định nghĩa ANSI C99, có nguồn gốc từ listings ANSI C và được sửa đổi cho ANSI C99). Bạn có thể sử dụng nó theo bất kỳ cách nào bạn muốn, bao gồm kết hợp nó vào các tác phẩm khác, không có phân bổ hoặc bồi thường. Tôi bằng cách đặt nó trong phạm vi công cộng. (Lưu ý: đây là chủ yếu dành cho những người làm việc cho chủ nhân thực sự kén chọn về những điều như vậy, tôi thực sự không quan tâm.)

 
\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

cách tôi sử dụng tính năng này trong \ begin {lstlisting}? – CarlJ

+0

@meccan: chỉ cần thêm nó sau câu lệnh \ lstset ở đầu tài liệu – brainray

Các vấn đề liên quan