为字符串中的 C 转义序列着色

为字符串中的 C 转义序列着色

鉴于以下 MWE:

\documentclass{article}

\usepackage{xcolor}
\usepackage{listings}
\usepackage{nimbusmono}

\lstset{
    language=[ANSI]C,
    basicstyle=\ttfamily,
    stringstyle=\color{red}
}

\begin{document}

\begin{lstlisting}
printf("Hello\n");
\end{lstlisting}

\end{document}

\n除了字符串颜色之外,还有其他巧妙的方法可以设置字符串中转义序列的颜色吗?我尝试过literate但没有成功。

答案1

我更喜欢使用它minted来为列表着色,但这需要pygments安装(这是一个 Python 包),并且还需要使用它--shellescape来编译TEX文件。

在此处输入图片描述

\documentclass{article}

\usepackage{minted}
% To test other styles: https://pygments.org/demo/#try
\usemintedstyle{pastie}

\begin{document}

\begin{minted}{python}
printf("Hello\n");
\end{minted}

\end{document}

答案2

如果您允许在列表中添加其他字符,则解决方案可能如下:

\documentclass{article}

\usepackage{xcolor}
\usepackage{listings}
\usepackage{nimbusmono}

\lstset{
    language=[ANSI]C,
    basicstyle=\ttfamily,
    stringstyle=\color{red}
}

\lstset{
escapeinside={\%*}{*}
}

\def\n{\textcolor{blue}{\texttt{\string\n}}}
\begin{document}

\begin{lstlisting}
printf("Hello%*\n*");
\end{lstlisting}

\end{document}

在此处输入图片描述

相关内容