[Tex/LaTex] Breaking lines in codes with mcode package

line-breakingMATLAB

I want to include some code from MATLAB and I'm using the mcode package. But the problem I encounter with it is that it doesn't break long lines automatically and since I load the file and not the code.
The problem will be solved if I put ... in the end of long lines, but I wondered is there any option in this package by which long lines be broken automatically?

Revision :
here is the code :

‎\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}

where technique.m is a matlab file and what I get from that is :

enter image description here

and it's out of the frame. I actually get the warning that autolinebreaks is an unknown option but I have no idea what should I do to solve the problem.

Best Answer

Use \usepackage[autolinebreaks]{mcode}. Other possible options which may be of interest to you are [framed,numbered,autolinebreaks,useliterate.....]. For more details, look into the source code of mcode.

Edit for the revised question.

If autolinbreaks option is given, mcode.sty defines lstset as (line no 231 in mcode.sty of version 2.7.0.0)

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

The culprit here is breakatwhitespace=true. Your formula has no white spaces and hence it will never break at the end of line.

Solution

Add

breakatwhitespace=false 

after loading mcode.

MWE will be

\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}

enter image description here

Note: Instead of putting your code inside figure environment, you can use the second instance as I showed in the code. The differences are clear, I hope.

Related Question