0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

LaTexでlstlistingを使用した時に日本語が文字列判定されない問題

Posted at

問題のコード

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

結果
sc.jpg

対策

以下のような記述に変更すると、日本語にもスタイルが適応される。

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

のようにすることで文字の色をオレンジに変えることができた。

結果
sc.jpg

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?