목록이 포함된 MatLab 코드에서 문자열이 잘못 해석되는 이유

목록이 포함된 MatLab 코드에서 문자열이 잘못 해석되는 이유

목록 패키지를 사용하여 내 문서에 MatLab 코드를 포함하려고 하는데 문자열이 올바르게 해석되지 않는 것 같습니다.

fprintf('ABC %s:\n', mystring);
fprintf("ABC %s:\n", mystring);
\documentclass{article}
\usepackage[english]{babel}     %use english or ngerman
\usepackage[utf8]{inputenc}     %German äöü for input
\usepackage[T1]{fontenc}        %German äöü for pdf
\usepackage{textcomp}           %Additional Symbols e.g. degree
\usepackage{xcolor}
\usepackage{listings}

\definecolor{keyword}{RGB}{0,175,203}      %color
\definecolor{comment}{rgb}{0.06,0.58,0.07} %color
\definecolor{label}{rgb}{0.5,0.5,0.5}      %color

\lstset{                                   %Configure code
  keywordstyle=\bfseries\color{keyword},
  stringstyle=\ttfamily\color{label},
  commentstyle=\color{comment}
}

\begin{document}

\begin{lstlisting}[
    language=MatLab,
    label=lst:broken,
    caption={Broken Syntax Highlighting}
]
fprintf('ABC %s:\n', mystring);
fprintf("ABC %s:\n", mystring);
\end{lstlisting}

\end{document}

결과:

MWE 결과

에 있는 "것과 동일한 목록에 추가할 수 있나요 ?'

답변1

Matlab 언어 정의는 '기본적으로 문자열 구분 기호로만 정의됩니다. 그러나 "목록의 옵션에 다음 줄을 추가하여 만들 수도 있습니다 .

morestring=[m]"

mMatlab 코드에 대한 특수 구분 기호 유형은 다음과 같이 정의됩니다.

[...] Ada 및 Matlab 및 문자열 구분 기호가 다른 목적으로도 사용되는 다른 언어에 대한 특수 유형입니다. d문자열이 문자, 오른쪽 괄호, 오른쪽 대괄호 또는 기타 문자 뒤에서 시작되지 않는다는 점을 제외 하면 와 동일합니다 .

특별한 동작을 원하지 않으면 를 사용하십시오 morestring=[d]".

새로운 문자열 유형이 추가된 Matlab 기반의 새로운 언어를 정의할 수도 있습니다.

\lstdefinelanguage{MyMatlab}{
  language=Matlab,
  morestring=[m]"
}

목록에 새 언어를 사용하면 원하는 결과가 나옵니다.

여기에 이미지 설명을 입력하세요

관련 정보