问题 使用LaTeX中的列表格式化Objective C代码


我想知道如何使用the来格式化Objective C代码 listings 包装的乳胶?我知道该语言支持C(目标),所以我如何设置它 \lstset  language 选项?

谢谢


5617
2018-04-09 13:11


起源



答案:


喜欢这个:

\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


10
2018-04-09 13:22



那是C.对于Objective C,你想要使用 \lstset{language=[Objective]C}。 - Joachim Sauer
谢谢 - 我有一个问题,我的来源很长,并且正在离开页面的宽度 - Overfull问题,这可以解决吗?谢谢 - joec
@Joachim,我从来没有使用过Objective C,因为joec把它放在括号之间,我猜这些语言差别不大。我错了! :)。从网上抓取了一些Objective C并修复了我的例子。谢谢。 - Bart Kiers
@joec,看来你没有查看我发布的链接(或过于简短)。线的断裂解释如下 4.10 Margins and line shape。我调整了我的例子。下次请先阅读已经建议的内容。谢谢。 - Bart Kiers


答案:


喜欢这个:

\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


10
2018-04-09 13:22



那是C.对于Objective C,你想要使用 \lstset{language=[Objective]C}。 - Joachim Sauer
谢谢 - 我有一个问题,我的来源很长,并且正在离开页面的宽度 - Overfull问题,这可以解决吗?谢谢 - joec
@Joachim,我从来没有使用过Objective C,因为joec把它放在括号之间,我猜这些语言差别不大。我错了! :)。从网上抓取了一些Objective C并修复了我的例子。谢谢。 - Bart Kiers
@joec,看来你没有查看我发布的链接(或过于简短)。线的断裂解释如下 4.10 Margins and line shape。我调整了我的例子。下次请先阅读已经建议的内容。谢谢。 - Bart Kiers


虽然这个答案没有回答OP的问题 本身,我认为其他人正在寻找Objective-C listings 相关信息将偶然发现这个问题。

下面是一个 listings  \lstdefinelanguage 适用于Objective-C 2.0,GNU99和ANSI C99。而 listings 包括C和Objective-C的定义,定义适用于较旧的C89标准和Objective-C 1.0。下面的版本添加了C99,将GNU99添加到C99,然后将Objective-C(2.0)添加到GNU99。

如果对不同于“普通”字体样式的关键字使用字体样式,则可能只会看到差异。

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

\ lstdefinelanguage [目的] {C} [GNU99] {C}
  {morekeywords = {@接球,@类,@编码,@端,@最后,@实现中,%
      @界面,@私人@保护,@协议,@公众,@选择,%
      @同步,@扔,@尝试,BOOL,类,IMP,NO,无,SEL,YES,_cmd,%
      bycopy,按地址,身份证,IN,INOUT为零,单向,出来,自我,超,%
      %接下来的两行是Objective-C 2关键字。
      @动态,@包,@属性,@合成,读写,只读,%
      转让,保留,复制,非原子%
      }%
   moredirectives = {}进口%
  }%

\ lstdefinelanguage [GNU99] {C} [99] {C}
  {morekeywords = {ASM,__ ASM __,__扩展__的typeof,__的typeof __}%
  }%

\ lstdefinelanguage [99] {C}%
  {morekeywords = {_ BOOL,_Complex,_Imaginary,汽车,断线,情况下,炭,%
      常量,继续,默认情况下,做双,否则,枚举的extern,浮动,对,%
      跳转,如果,内联,INT,长,注册,限制,回报,周期短,签署%
      的sizeof,静态,结构,开关,类型定义,工会,无符号,空隙,易失性,%
      而},%
   敏感,%
   morecomment = [S] {/ *} {* /},%
   morecomment = [1] //,%
   了解详情STRING = [B]”,%
   了解详情STRING = [B]”,%
   moredelim = * [指令] \#,%
   moredirectives = {限定,elif的,否则,ENDIF,错误,如果IFDEF,IFNDEF,线,%
      包括编译,民主基金,警告}%
  } [关键字,注释,字符串,指令]%

4
2018-02-21 22:41



我如何在\ begin {lstlisting}中使用它? - CarlJ
@meccan:只需将它添加到文档开头的\ lstset语句后面 - brainray