![在 lstlisting 中使用 .\ 会导致问题崩溃](https://linux22.com/image/460951/%E5%9C%A8%20lstlisting%20%E4%B8%AD%E4%BD%BF%E7%94%A8%20.%5C%20%E4%BC%9A%E5%AF%BC%E8%87%B4%E9%97%AE%E9%A2%98%E5%B4%A9%E6%BA%83.png)
我想用 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}