한 언어에서는 파란색 괄호를 인쇄하고 다른 언어에서는 검정색을 인쇄합니다.

한 언어에서는 파란색 괄호를 인쇄하고 다른 언어에서는 검정색을 인쇄합니다.

해당 질문 외에도 한 언어에 해당 설정을 적용하고 다른 언어에는 기본 설정을 적용할 수 있는지 궁금합니다. C 목록에서 연산자와 대괄호를 강조 표시하는 방법은 무엇입니까?

\documentclass{article}

\usepackage{xcolor}
\usepackage{listings}

\newcommand\opstyle{\color{red}} % <--- customise operator style here

\makeatletter

\lstset
{%
  language=C++,
  alsoletter=0123456789,% to prevent \opstyle from being applied to digits
}

% Hook into listings
\lst@AddToHook{OutputOther}{\ProcessOther@silmeth}

% helper macro
\newcommand\ProcessOther@silmeth
{%
  \ifnum\lst@mode=\lst@Pmode%     % If we're in `Processing' mode...
    \def\lst@thestyle{\opstyle}%  % ... redefine the style locally
  \fi%
}

\makeatother

\begin{document}
\begin{lstlisting}[]
int i = 0;
if(i > 1) && (1/2 < 2) {

    // one-line comment ()={}><;&

    printf("string: ()={}><;&");

    /*
      block comment ()={}><&;
    */
}
\end{lstlisting}

여기서 또 다른 그룹이 블랙으로 등장했으면 좋겠습니다. 어떻게 해야 하나요?

\begin{lstlisting}[]
int i = 0;
if(i > 1) && (1/2 < 2) {

    // one-line comment ()={}><;&

    printf("string: ()={}><;&");

    /*
      block comment ()={}><&;
    */
}
\end{lstlisting}
\end{document}

답변1

일반적인 방법은 a를 정의 style하고 원할 때만 해당 스타일을 사용하는 것입니다. 그러나 이것이 설정되어 있지 않으면 사용할 수 있습니다

\renewcommand\opstyle{\color{blue}}

원하는 대로 목록을 변경하려면 목록 앞에 다음을 수행하세요.

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

암호:

\documentclass{article}

\usepackage{xcolor}
\usepackage{listings}

\newcommand\opstyle{\color{red}} % <--- customise operator style here

\makeatletter

\lstset
{%
  language=C++,
  alsoletter=0123456789,% to prevent \opstyle from being applied to digits
}

% Hook into listings
\lst@AddToHook{OutputOther}{\ProcessOther@silmeth}

% helper macro
\newcommand\ProcessOther@silmeth
{%
  \ifnum\lst@mode=\lst@Pmode%     % If we're in `Processing' mode...
    \def\lst@thestyle{\opstyle}%  % ... redefine the style locally
  \fi%
}

\makeatother

\begin{document}
\begin{lstlisting}[]
int i = 0;
if(i > 1) && (1/2 < 2) {

    // one-line comment ()={}><;&

    printf("string: ()={}><;&");

    /*
      block comment ()={}><&;
    */
}
\end{lstlisting}

\renewcommand\opstyle{\color{blue}}
I want the group other to appear in Black again. 
\begin{lstlisting}[]
int i = 0;
if(i > 1) && (1/2 < 2) {

    // one-line comment ()={}><;&

    printf("string: ()={}><;&");

    /*
      block comment ()={}><&;
    */
}
\end{lstlisting}
\end{document}

\end{document}

관련 정보