列表环境中的彩色背景

列表环境中的彩色背景

我想listings通过使用特定颜色为某些关键字的背景着色来使我的环境更具可读性。就像这样:

在此处输入图片描述

我考虑使用包\colorbox中的函数xcolor,但是它只适用于参数(而不是\color),不适用于列表。

还有其他方法可以让彩色文本背景与listings环境相适应吗?

答案1

可以使用等keywordstyleidentifierstyle并将它们设置为特定颜色,或者使用带有\colorbox{colorname}-- 的特定颜色背景。相关的第二个参数\colorbox将自动插入listings。请注意,这可能看起来不太理想,请参阅 C 语言中带有#- 符号下行部分的示例:

\documentclass{article}

\usepackage{xcolor}

\usepackage{listings}


\begin{document}

\lstset{ keywordstyle={\colorbox{yellow}},identifierstyle={\colorbox{green}}}

\begin{lstlisting}[language=C]
#include <stdio.h>

int main(int argc, char** argv)
{
  printf("Hello World\n");
  return EXIT_SUCCESS;
}
\end{lstlisting}

\end{document}

在此处输入图片描述

答案2

添加到克里斯蒂安的回答,您可能需要修复colorboxes 的高度并将其填充设置为零,以便它们不会改变代码的布局。

打印结果屏幕

\documentclass{article}

\usepackage{xcolor}
\usepackage{listings}

\newcommand{\myColorBox}[3][0pt]{{\fboxsep#1\colorbox{#2}{\strut #3}}}

\begin{document}

\lstset{columns=fullflexible,basicstyle=\ttfamily,keepspaces,language=C}

\begin{lstlisting}
#include <stdio.h>

int main(int argc, char** argv)
{
  printf("Hello World\n");
  return EXIT_SUCCESS;
}
\end{lstlisting}

\begin{lstlisting}[
  keywordstyle={\myColorBox{yellow}},
  identifierstyle={\myColorBox{green}}
]
#include <stdio.h>

int main(int argc, char** argv)
{
  printf("Hello World\n");
  return EXIT_SUCCESS;
}
\end{lstlisting}

\end{document}

相关内容