목록 목록에서 줄 번호의 배경색을 변경하시겠습니까?

목록 목록에서 줄 번호의 배경색을 변경하시겠습니까?

를 다루는 다음 코드를 고려하십시오 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}

줄 번호의 배경(예: 회색)을 색칠하지만 코드의 배경은 색칠하지 않는 방법이 있습니까?

답변1

listings이에 대해 사전 정의된 옵션은 없지만 사용하려는 경우tcolorbox패키지와 좋은 상호작용을 하는 패키지를 listings만드는 방법은 다음과 같습니다.

\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}

여기에 이미지 설명을 입력하세요

답변2

또 다른 방법은 일반적인 lstlisting 명령을 사용할 수 있도록 프레임과 그 여백을 다루는 것입니다.

\lstset {
...
frame=l,
framesep=4.5mm,
framexleftmargin=2.5mm,
fillcolor=\color{numberbg},
rulecolor=\color{ballblue},
numberstyle=\normalfont\tiny\color{numbercolor}
}

이 스니펫의 스타일은 다음과 같습니다.

여기에 이미지 설명을 입력하세요

관련 정보