
Betrachten Sie den folgenden Code, der sich mit einem befasst lstlisting
.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{listings}
\usepackage{xcolor}
\lstset{basicstyle=\small\ttfamily,keywordstyle=\color{blue},language=C++,showstringspaces=false,tabsize=2,numbers=left}
\begin{document}
\begin{lstlisting}
#include <stdio.h>
int main(void) {
printf("Hello World!");
return 0;
}
\end{lstlisting}
\end{document}
Gibt es eine Möglichkeit, den Hintergrund der Zeilennummern einzufärben (z. B. in Grau), aber nicht den Hintergrund des Codes?
Antwort1
listings
hat keine vordefinierte Option dafür, aber wenn Sie bereit sind, dietcolorbox
Paket, das eine gute Interaktion mit dem listings
Paket hat. So können Sie es tun:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[many]{tcolorbox}
\tcbuselibrary{listings}
\newtcblisting{mycpp}{
colback=white,
boxrule=0pt,
arc=0pt,
outer arc=0pt,
top=0pt,
bottom=0pt,
colframe=white,
listing only,
left=15.5pt,
enhanced,
listing options={
basicstyle=\small\ttfamily,
keywordstyle=\color{blue},
language=C++,
showstringspaces=false,
tabsize=2,
numbers=left
},
overlay={
\fill[gray!30]
([xshift=-3pt]frame.south west)
rectangle
([xshift=11.5pt]frame.north west);
}
}
\begin{document}
\begin{mycpp}
#include <stdio.h>
int main(void) {
printf("Hello World!");
return 0;
}
int main(void) {
printf("Hello World!");
return 0;
}
int main(void) {
printf("Hello World!");
return 0;
}
\end{mycpp}
\end{document}
Antwort2
Eine andere Möglichkeit wäre, mit Rahmen und ihren Rändern zu arbeiten, sodass Sie den normalen lstlisting-Befehl verwenden können.
\lstset {
...
frame=l,
framesep=4.5mm,
framexleftmargin=2.5mm,
fillcolor=\color{numberbg},
rulecolor=\color{ballblue},
numberstyle=\normalfont\tiny\color{numbercolor}
}
Dieses Snippet ergibt folgenden Stil: