使用 mcode 包在代码中断行

使用 mcode 包在代码中断行

我想包含一些来自 MATLAB 的代码,我正在使用该mcode包。但我遇到的问题是它不会自动中断长行,因为我加载的是文件而不是代码。如果我...在长行的末尾添加,问题就会解决,但我想知道这个包中是否有任何选项可以自动中断长行?

修订:这里是代码:

‎\documentclass{book}‎

‎\usepackage{graphicx}‎ 
‎\usepackage{amsmath,amssymb}‎ 
‎\usepackage{caption}‎
‎\usepackage{color,xecolor}‎
‎\usepackage[framed,numbered,autolinebreaks,useliterate]{mcode}‎

‎\begin{document}‎

‎\begin{figure}‎
‎\caption{My program for plotting the above formula in 2 different conditions}‎
‎\lstinputlisting{technique.m}‎
‎\end{figure}‎

‎\end{document}

其中 technique.m 是一个 matlab 文件,我从中获得的内容是:

在此处输入图片描述

并且超出了框架范围。实际上,我收到了警告,说自动换行是一个未知选项,但我不知道该怎么做才能解决这个问题。

答案1

使用\usepackage[autolinebreaks]{mcode}。其他可能令您感兴趣的选项是[framed,numbered,autolinebreaks,useliterate.....]。有关更多详细信息,请查看 的源代码mcode

编辑对于修改后的问题。

如果autolinbreaks给出了选项,则mcode.sty定义lstset为(2.7.0.0 版本 mcode.sty 中的第 231 行)

\lstset{breaklines=true,breakatwhitespace=true,prebreak=\usebox{\lbreakdots}}

这里的罪魁祸首是breakatwhitespace=true。您的公式没有空格,因此它永远不会在行末中断。

解决方案

添加

breakatwhitespace=false 

加载后mcode

MWE 将

\documentclass{book}

\usepackage{graphicx}
\usepackage{amsmath,amssymb}
\usepackage{caption}
% \usepackage{color,xcolor}
\usepackage[framed,numbered,autolinebreaks,useliterate]{mcode}
\lstset{breakatwhitespace=false} %%<---this line added

\begin{document}

\begin{figure}
\caption{My program for plotting the above formula in 2 different conditions}
\lstinputlisting{technique.m}
\end{figure}

\lstinputlisting[caption={My program for plotting the above formula in 2 different
 conditions}]{technique.m}

\end{document}

在此处输入图片描述

figure注意:你可以使用我在代码中展示的第二个实例,而不是将代码放在环境中。我希望区别很明显。

答案2

另一个选择是包Listings文档在这里)。它非常可定制,但例如,我认为这就足够了:

\usepackage{listings}    
\lstset{
        language=Matlab,
        breaklines=true
    }

然后,您可以使用 嵌入文件。使用附加样式参数,可以生成类似以下内容的内容(这些是编译成 .pdf\lstinputlisting{test.m}的内容):test.m

编译示例

相关内容