私は、コードを Java コードのようにフォーマットするために listings パッケージを使用しようとしています。これは私が使用しようとしている MWE です:
\documentclass[a4paper,11pt]{report}
\usepackage[utf8]{inputenc} % utf8
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{listings}
\definecolor{pblue}{rgb}{0.13,0.13,1}
\definecolor{pgreen}{rgb}{0,0.5,0}
\definecolor{pred}{rgb}{0.9,0,0}
\definecolor{pgrey}{rgb}{0.46,0.45,0.48}
\definecolor{annotation}{cmyk}{0, 0, 1, 0.2}
\lstdefinestyle{Java}{
language=Java, %if declared outside, causes problems
showspaces=false,
showtabs=false,
breaklines=true,
showstringspaces=false,
breakatwhitespace=true,
commentstyle=\color{pgreen},
keywordstyle=\color{pblue},
stringstyle=\color{pred},
basicstyle=\ttfamily\singlespacing,
moredelim=[il][\textcolor{annotation}]{\$\$},
moredelim=[is][\textcolor{annotation}]{\%\%}{\%\%},
rulecolor= \color{black}
}
\begin{document}
\lstset{style=Java}
\begin{lstlisting}
public byte getSelectedPortAsByte(){
int temp;
switch(selectedPort){
case "PORTB":
temp= 0x01;
break;
case "PORTC":
temp= 0x02;
break;
case "PORTD":
temp= 0x03;
break;
default:
temp= 0x00;
break;
}
return (byte)temp;
}
\end{lstlisting}
\end{document}
ビルドしようとすると、次のエラー メッセージが表示されます: 行 34: 未定義の制御シーケンス。\begin{lstlisting} TexStudio 2.12.6、Win7、MikTeX 2.9 を使用しています。
ここで何か明らかなことを見逃しているのでしょうか?
答え1
残念ながら、これはエディターのよく知られた欠陥で、あなたを誤解させてしまいます。エラーメッセージは
! Undefined control sequence.
\lst@basicstyle ->\ttfamily \singlespacing
シングルスペースが定義されていないため(setspace
おそらくパッケージが必要)、エディターは、テキストがエラーを検出したコンテキストの最も役に立たない最終行のみを表示します。
l.33 \begin{lstlisting}