12

我想知道应该如何使用listingsLaTeX 包格式化 Objective C 代码?我知道该语言支持 C (Objective) ,那么如何在\lstset language选项中设置它?

谢谢

4

2 回答 2

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

于 2010-04-09T13:22:11.540 回答
4

虽然这个答案本身并没有回答 OP 的问题但我认为其他寻找 Objective-Clistings相关信息的人会偶然发现这个问题。

下面是listings \lstdefinelanguage针对 Objective-C 2.0、GNU99 和 ANSI C99 的。虽然listings包括 C 和 Objective-C 的定义,但这些定义适用于较旧的 C89 标准和 Objective-C 1.0。下面的版本添加了 C99,在 C99 中添加了 GNU99,然后在 GNU99 中添加了 Objective-C (2.0)。

如果您为关键字使用与“正常”字体样式不同的字体样式,您可能只会看到差异。

我是以下代码的作者(ANSI C99 定义除外,它源自listingsANSI C 并针对 ANSI C99 进行了修改)。您可以以任何您希望的方式使用它,包括将其合并到其他作品中,无需署名或补偿。我特此将其置于公共领域。(注:这主要是为那些为那些对这些事情非常挑剔的雇主工作的人工作的,我真的不在乎。

\lstdefinelanguage[目标]{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,%
      % 接下来的两行是 Objective-C 2 的关键字。
      @dynamic,@package,@property,@synthesize,readwrite,readonly,%
      分配、保留、复制、非原子%
      },%
   更多指令={导入}%
  }%

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

\lstdefinelanguage[99]{C}%
  {morekeywords={_Bool,_Complex,_Imaginary,auto,break,case,char,%
      const,继续,默认,do,double,else,enum,extern,float,for,%
      goto,if,inline,int,long,register,restrict,return,short,signed,%
      sizeof、静态、结构、开关、typedef、联合、无符号、无效、易失性、%
      尽管},%
   敏感的,%
   更多评论=[s]{/*}{*/},%
   更多评论=[l]//,%
   更多字符串=[b]",%
   更多字符串=[b]',%
   moredelim=*[指令]\#,%
   moredirectives={define,elif,else,endif,error,if,ifdef,ifndef,line,%
      包括,编译指示,undef,警告}%
  }[关键字、注释、字符串、指令]%
于 2011-02-21T22:41:18.727 回答