
Одинарная кавычка внутри listings
строки, похоже, интерпретируется как конец строки. Есть ли способ избежать этого?
\documentclass[12pt]{article}
\usepackage[top=0.3in, bottom=1.2in, left=0.8in, right=0.8in]{geometry}
\setlength{\parindent}{0cm}
\usepackage[english]{babel}
\usepackage{listings}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\begin{document}
\lstset{language=Matlab,
basicstyle=\ttfamily,
keywordstyle=\color{Blue}\ttfamily,
stringstyle=\color{Red}\ttfamily,
commentstyle=\color{Emerald}\ttfamily,
morecomment=[l][\color{Magenta}]{\#},
breaklines=true,
breakindent=0pt,
breakatwhitespace,
columns=fullflexible,
showstringspaces=false
}
\begin{lstlisting}
a=1;
if a==1
disp('Is 1')
elseif a==2
disp('Is 2')
else
disp('I don't know')
end
\end{lstlisting}
\end{document}
решение1
Поскольку одинарные кавычки используются в качестве разделителей строк в Matlab, вам необходимо экранировать этот символ, чтобы сделать его частью строки. Это делается путем ввода двух одинарных кавычек подряд:
disp('I don''t know')
Matlab
Определенный язык достаточно listings
умен, чтобы набрать правильный текст, в данном случае:
В качестве примечания, вам может быть интересноmatlab-prettifier
пакет; см.этот ответ.
решение2
Возможное решение отсписки.pdfс mathescape
параметром:
\documentclass[12pt]{article}
\usepackage[top=0.3in, bottom=1.2in, left=0.8in, right=0.8in]{geometry}
\setlength{\parindent}{0cm}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{listings}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\begin{document}
\lstset{language=Matlab,
basicstyle=\ttfamily,
keywordstyle=\color{Blue}\ttfamily,
stringstyle=\color{Red}\ttfamily,
commentstyle=\color{Emerald}\ttfamily,
morecomment=[l][\color{Magenta}]{\#},
breaklines=true,
breakindent=0pt,
breakatwhitespace,
columns=fullflexible,
showstringspaces=false
}
\begin{lstlisting}[mathescape]
a=1;
if a==1
disp('Is 1')
elseif a==2
disp('Is 2')
else
disp('I don$\texttt{\color{red}'}$t know')
end
\end{lstlisting}
\end{document}