带有 C 代码的逐字文本

带有 C 代码的逐字文本

我正在尝试在最新的 ConTeXt (MKIV) 中排版大量 C 代码。它尝试:

 \startC
    printf("Hello, world\n");
 \stopC

却发现该\startC宏未定义。它在 verb-c.mkii 中定义。我甚至尝试将

\input verb-c.mkii

在使用之前\startC,但它在另一个未定义的宏上失败了。排版 C 的正确方法是什么?手动的推荐\startC但它没有说明如何打开它(除了\definetyping(没有突出显示语法)。

它实际上在 MKII 版本的 ConTeXt 中起作用,但在 MKIV 中失败。

答案1

ConTeXt 花园页面列出pret-c模块。因此下面的代码应该可以工作。

\installprettytype[C][C]
\definetyping[C][option=C, tab=4] % defines \startC as shortcut for \starttyping[option=C]
\definetype[typeC][option=C, tab=4, style=tt] % defines \typeC
\definecolor[Ccomment][darkblue]

\starttext
bla bla \typeC{int main(){}} bla bla
\startC
int foo = 42;
\stopC
\stoptext

也许您需要先安装模块:

tlmgr install context-C-Pretty-Printing

答案2

我不确定这在 ConTeXt 中是否有效,但在 LaTeX 中我一直使用它来包含我的 C++ 代码。您应该能够将其更改为也适用于 C。

前言:

\usepackage{listings}
\usepackage{textcomp}
\definecolor{listinggray}{gray}{0.9}
\definecolor{lbcolor}{rgb}{0.9,0.9,0.9}
\lstset{
%backgroundcolor=\color{lbcolor},
tabsize=4,    
%   rulecolor=,
language=[GNU]C++,
    basicstyle=\scriptsize,
    upquote=true, % if true need to use \usepackage{textcomp}
    aboveskip={1.5\baselineskip},
    columns=fixed,
    showstringspaces=false,
    extendedchars=false,
    breaklines=true,
    prebreak = \raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}},
    frame=single,
    numbers=left,
    showtabs=false,
    showspaces=false,
    showstringspaces=false,
    identifierstyle=\ttfamily,
    keywordstyle=\color[rgb]{0,0,1},
    commentstyle=\color[rgb]{0.026,0.112,0.095},
    stringstyle=\color[rgb]{0.627,0.126,0.941},
    numberstyle=\color[rgb]{0.205, 0.142, 0.73},
%        \lstdefinestyle{C++}{language=C++,style=numbers}’.
}
\lstset{
backgroundcolor=\color{lbcolor},
tabsize=4,
language=C++,
captionpos=b,
tabsize=3,
frame=lines,
numbers=left,
numberstyle=\tiny,
numbersep=5pt,
breaklines=true,
showstringspaces=false,
basicstyle=\footnotesize,
%  identifierstyle=\color{magenta},
keywordstyle=\color[rgb]{0,0,1},
commentstyle=\color{Green},
stringstyle=\color{red}
}

文件中提到:

\lstinputlisting{\CppCode/SSTe.cpp}

答案3

免责声明:这并没有回答问题,我误解了,以为我感兴趣的是 MkII。正如我在答案底部所说,我不知道 MkIV 中的系统是什么(也不知道 MkII 中的系统是什么 :D)。

只需从您分享的 contextwiki 中的链接复制即可

\input verb-c.mkii

\setupcolors[state=start]
\setuptyping[option=color]

% define the colors to fit your document style
\definecolor[MYcolorone]  [r=.8,g=.5,b=.5]
\definecolor[MYcolortwo]  [r=.8,g=.5,b=.2]
\definecolor[MYcolorthree][r=.8,g=.5,b=.8]
\definecolor[MYcolorfour] [r=.8,g=.2,b=.5]

% define a palete using these four colors
\definepalet[MYcolors]
  [prettyone=MYcolorone,
   prettytwo=MYcolortwo,
   prettythree=MYcolorthree,
   prettyfour=MYcolorfour]

% XML code will be typeset with the palette you just defined
\definepalet[Ccolorpretty] [MYcolors] % the name is magic !

\starttext

\startC
  printf("Hello, world\n");
\stopC

\stoptext

在此处输入图片描述

最好能得到某人的官方答复其实知道系统是什么。包括在 MkIV 中执行此操作的方式,这似乎是现在的标准(而不是 MkII)。

相关内容