![목록이 포함된 MatLab 코드에서 문자열이 잘못 해석되는 이유](https://rvso.com/image/399825/%EB%AA%A9%EB%A1%9D%EC%9D%B4%20%ED%8F%AC%ED%95%A8%EB%90%9C%20MatLab%20%EC%BD%94%EB%93%9C%EC%97%90%EC%84%9C%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%B4%20%EC%9E%98%EB%AA%BB%20%ED%95%B4%EC%84%9D%EB%90%98%EB%8A%94%20%EC%9D%B4%EC%9C%A0.png)
목록 패키지를 사용하여 내 문서에 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}
결과:
에 있는 "
것과 동일한 목록에 추가할 수 있나요 ?'
답변1
Matlab 언어 정의는 '
기본적으로 문자열 구분 기호로만 정의됩니다. 그러나 "
목록의 옵션에 다음 줄을 추가하여 만들 수도 있습니다 .
morestring=[m]"
m
Matlab 코드에 대한 특수 구분 기호 유형은 다음과 같이 정의됩니다.
[...] Ada 및 Matlab 및 문자열 구분 기호가 다른 목적으로도 사용되는 다른 언어에 대한 특수 유형입니다.
d
문자열이 문자, 오른쪽 괄호, 오른쪽 대괄호 또는 기타 문자 뒤에서 시작되지 않는다는 점을 제외 하면 와 동일합니다 .
특별한 동작을 원하지 않으면 를 사용하십시오 morestring=[d]"
.
새로운 문자열 유형이 추가된 Matlab 기반의 새로운 언어를 정의할 수도 있습니다.
\lstdefinelanguage{MyMatlab}{
language=Matlab,
morestring=[m]"
}
목록에 새 언어를 사용하면 원하는 결과가 나옵니다.