我正在尝试在最新的 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)。