
다음과 같은 코드 목록을 준비하고 싶습니다.
\lstset{escapeinside={<@}{@>}}
\begin{lstlisting}
<@\textcolor{blue}{void}@> fun(var<<@\textcolor{blue}{long int}@>> list)
\end{lstlisting}
그러나 결국 다음과 같이 렌더링되었습니다.
나에게는 뭔가 이상해 보인다. 예를 들어 검은색 문자 사이의 간격은 파란색 문자의 간격과 다릅니다. 왜 그럴까요?
편집하다
다음과 columns
같이 설정하면 문제가 해결됩니다. 자세한 내용은fullflexible
\begin{lstlisting}[columns=fullflexible]
이 답변.
답변1
다른 매크로의 인수와 이스케이프된 영역에서 축어적/목록 텍스트를 유지해야 합니다.
\documentclass{article}
\usepackage{listings}
\usepackage{color}
\def\z#1{\gdef\zz{\color{#1}}\aftergroup\zz}
\begin{document}
\lstset{escapechar=|}
\begin{lstlisting}
|\z{blue}|void|\z{black}| fun(var<|\z{blue}|long int|\z{black}|> list)
\end{lstlisting}
\end{document}
답변2
자신만의 목록 환경을 정의하고 정의한 키워드 목록에 다양한 색상을 지정할 수 있습니다.
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[procnames]{listings}
\usepackage{color}
\lstnewenvironment{myCode}[1][]{
\lstset{
emph={void,long,int},
emphstyle=\color{blue},
emph={[2]fun},
emphstyle=[2]\color{green}
}}{}
\begin{document}
\begin{myCode}
void fun(var<long int> list)
\end{myCode}
\end{document}