在 lstlisting 中使用 .\ 会导致问题崩溃

在 lstlisting 中使用 .\ 会导致问题崩溃

我想用 MATLAB 代码生成 MATLAB 美化代码。使用.\会导致错误。alsoletter={.\\}似乎\lstdefinestyle不起作用

\documentclass[aspectratio=169, xcolor={x11names}, t, handout]{beamer}

\usepackage{calc}

\usetheme{Dresden}
\usefonttheme{professionalfonts}
\renewcommand{\sfdefault}{ppl}

\usepackage[T1]{fontenc}
\renewcommand{\encodingdefault}{T1}

\usepackage{listings}

% ========== MATLAB codes packages =========
% BEGIN_FOLD

\usepackage[]{matlab-prettifier}
% BEGIN_FOLD

% Inline code
% BEGIN_FOLD

\lstdefinestyle{matlab}{
    % style
    style=Matlab-editor,
    basicstyle=\linespread{0.8}\mlttfamily\footnotesize,
%   alsoletter={.\\},
    literate=
    *{.\\}{\textcolor{IndianRed1}{. \textbackslash{}}}{1}, % .\
}

\lstset{style=matlab}

% END_FOLD

% END_FOLD

% END_FOLD

\begin{document}

\begin{frame}[fragile, environment=frame, allowframebreaks=0.99]
    
\begin{lstlisting}
a.\b
\end{lstlisting}
    
\end{frame}

\end{document}

答案1

如果不需要,你不应该使用 beamer 来制作最小示例。必须加载所有 pgf 内容是一件麻烦事。

除此之外:listings 有一个文档,这个文档非常清楚地描述了 literate 的语法,并且还说明需要额外的括号来保护内容中的命令。

\documentclass{article}

\usepackage[T1]{fontenc}
\usepackage{listings}
\usepackage[]{matlab-prettifier}

\lstdefinestyle{matlab}{
    style=Matlab-editor,
    basicstyle=\linespread{0.8}\mlttfamily\footnotesize,
    literate=
    *{.\\}{{\textcolor{red}{.\textbackslash{}}}}{2}, % .\
}

\lstset{style=matlab}

\begin{document}

\begin{lstlisting}
a.\b
\end{lstlisting}
    
\end{document}

在此处输入图片描述

相关内容