使用 Matlab-prettifier 在同一个文档中列出不同的 Matlab 代码环境

使用 Matlab-prettifier 在同一个文档中列出不同的 Matlab 代码环境

我希望能够在同一文档中列出不同的 Matlab 代码清单。前三个清单来自解决方案在这里找到

如何摆脱前 3 个 Matlab 代码设置中的细线框,同时仍保留最后一个周围的细线框lstlisting

在此处输入图片描述

以下是代码:

\documentclass{article}
\usepackage{tcolorbox}
\usepackage{xcolor}
\tcbuselibrary{listings,skins}

\usepackage[framed,numbered,autolinebreaks,useliterate]{mcode}
\usepackage[numbered,framed]{matlab-prettifier}

\lstdefinestyle{mystyle}{
numbers=left,
numberstyle=\small,
numbersep=8pt,
language=Matlab
}

\newtcblisting{mylisting}[2][]{
    arc=0pt, outer arc=0pt,
    listing only,
    listing style=mystyle,
    title=#2,
    #1
    }

\begin{document}

\begin{mylisting}{}
%% Accuracy Calculation
Equal_Rows = find(diff(matrix_rec,[],2) == 0);
percent_success = (size(Equal_Rows,1)/numFolders) * 100
\end{mylisting}

\begin{mylisting}[hbox]{}
%% Accuracy Calculation
Equal_Rows = find(diff(matrix_rec,[],2) == 0);
percent_success = (size(Equal_Rows,1)/numFolders) * 100
\end{mylisting}

\begin{mylisting}[hbox,enhanced,drop shadow]{Accuracy Calculation}
Equal_Rows = find(diff(matrix_rec,[],2) == 0);
percent_success = (size(Equal_Rows,1)/numFolders) * 100
\end{mylisting}

\begin{lstlisting}[
backgroundcolor=\color{blue!05},
style=Matlab-editor,
basicstyle=\ttfamily\small
]
%% Accuracy Calculation
Equal_Rows = find(diff(matrix_rec,[],2) == 0);
percent_success = (size(Equal_Rows,1)/numFolders) * 100
\end{lstlisting}

\end{document} 

答案1

您可以mcode使用framed选项加载包,这会在代码周围添加细(不需要的)框架。您的mylisting环境是来自包的彩色框tcolorbox,它添加了其他框架围绕它。这就是为什么有两个框架。

要删除内部框架,只需framed在加载时删除该选项mcode

\usepackage[numbered,autolinebreaks,useliterate]{mcode}

结果

评论:你正在使用两个不同的包来实现相同的目的。如果你不小心,你将要输出不一致。由于这两个包都listings在后台使用,因此它们会产生不良的交互:例如,从包framed中删除后mcode,列表中的行号突然matlab-prettifier变为外部框架 - 即使你没有改变任何东西!请尝试决定一个包1并坚持下去。你设置matlab-prettifier为看起来像您mcode现在的列表,或反过来。

1 matlab-prettifier较新,功能更多mcode,并且附带大多数标准 LaTeX 安装

相关内容