問題のコード
\usepackage{listings,jlisting}
\definecolor{green}{RGB}{104,180,104}
\definecolor{blue}{RGB}{49,49,255}
\definecolor{orange}{RGB}{255,143,102}
\lstdefinestyle{Python}
{
language=Python,
basicstyle=\small\ttfamily,
numbers=left,
numberstyle=\tiny,
frame=tb,
tabsize=4,
columns=fixed,
showstringspaces=false,
showtabs=false,
keepspaces,
commentstyle=\color{green},
keywordstyle=\color{blue},
stringstyle=\color{orange}
}
このようにスタイルを定義した時、以下の記述では日本語がstringstyleで指定したスタイル(オレンジ色)にならない。
\begin{lstlisting}[style={Python}]
print('日本語')
\end{lstlisting}
対策
以下のような記述に変更すると、日本語にもスタイルが適応される。
\usepackage{listings,jlisting}
\definecolor{green}{RGB}{104,180,104}
\definecolor{blue}{RGB}{49,49,255}
\definecolor{orange}{RGB}{255,143,102}
\lstdefinestyle{Python}
{
language=Python,
basicstyle=\small\ttfamily,
numbers=left,
numberstyle=\tiny,
frame=tb,
tabsize=4,
columns=fixed,
showstringspaces=false,
showtabs=false,
keepspaces,
commentstyle=\color{green},
keywordstyle=\color{blue},
stringstyle=\color{orange},
% escapecharを追加
escapechar={\@}
}
\begin{lstlisting}[style={Python}]
print(@\color{orange}'日本語'\color{black}@)
\end{lstlisting}
escapecharで囲まれた部分はLaTexコマンドを使用することができるので、スタイルを適応することができる。今回の場合は、文字の色を変えたかったので、
@\color{orange}'日本語'\color{black}@
のようにすることで文字の色をオレンジに変えることができた。
参考資料