Formatear el código Objective C usando listados en LaTeX
Pregunta
Me pregunto cómo se supone que se debe formatear el código Objective C usando el listings
paquete de látex?Sé que el lenguaje es compatible con C (Objetivo), entonces, ¿cómo configuro esto en el \lstset
language
¿opción?
Gracias
Solución
De esta manera:
\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}
introducción detallada: http://mirror.hmc.edu /ctan/macros/latex/contrib/listings/listings.pdf
Otros consejos
Aunque esta respuesta no responde a la pregunta del OP per se, me imagino que otros buscan Objective-C listings
La información relacionada se topará con esta pregunta.
A continuación se muestra un listings
\lstdefinelanguage
para Objective-C 2.0, GNU99 y ANSI C99.Mientras listings
incluye definiciones tanto para C como para Objective-C, las definiciones son para el estándar C89 anterior y Objective-C 1.0.La siguiente versión agrega C99, agrega GNU99 a C99 y luego agrega Objective-C (2.0) a GNU99.
Probablemente sólo verás una diferencia si utilizas un estilo de fuente para las palabras clave que sea diferente al estilo de fuente "normal".
Soy el autor del siguiente código (excepto la definición ANSI C99, que se derivó de la listings
ANSI C y modificado para ANSI C99).Puede utilizarlo de la forma que desee, incluso incorporarlo a otras obras, sin atribución ni compensación.Por la presente lo pongo en el dominio público.(Nota:Esto es principalmente para aquellos que trabajan para empleadores que son muy exigentes con esas cosas, realmente no me importa.)
\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]%