Code covered by the BSD License  

Highlights from
M-code LaTeX Package

4.84932

4.8 | 74 ratings Rate this file 775 Downloads (last 30 days) File Size: 35.49 KB File ID: #8015
image thumbnail

M-code LaTeX Package

by Florian Knorn

 

12 Jul 2005 (Updated 26 Aug 2011)

Easily include nicely syntax highlighted m-code in your LaTeX documents.

| Watch this File

File Information
Description

There are many packages out there that do pretty much the same. However, there are also usually many settings and tweaks needed to get it to look just right.

This package saves you from all this hassle — just include it and you're done.

I originally wrote this package for myself to have colourful source code highlighted in LaTeX, looking exactly like in the Matlab editor — being able to just copy-paste the code directly (no pre-treatment with highlight.m or the likes), or simply give a file name and have its contents included and syntax highlighted.

Again, this packages relies on a bunch of other packages (and in particular the listings package for the actual work), but spares you from loads of configurations... So please first check the source code or the configuration options of the packages used if you have any issues.

I've also thrown together a small demo-document (now included) which should give you a quick example on how to actually use the package.

MATLAB release MATLAB 6.5 (R13)
Other requirements LaTeX with packages "listings", "xcolor" and "textcomp".
Tags for This File  
Everyone's Tags
Tags I've Applied
Add New Tags Please login to tag files.
Comments and Ratings (153)
22 Aug 2005 Doris Jimenez  
26 Sep 2005 Daniel Ennis

Excellent. Worked as advertised. Thanks for putting this together.

17 Oct 2005 Mat Odijk

For people who want to insert matlab code files (.m) directly use:
\lstinputlisting{your-file.m}
instead of the command's given in mcode.sty

18 Oct 2005 not given

Worked well making the matlab look cool but screwed up the pictures the whole way through the document. Probably my lack of Latexing skills but I couldn't work out how to fix this.

19 Oct 2005 Florian Knorn

Thanks Mat Odijk for the tip! I shall mention it in the preamble ;-)

@ User with no name: As I have very little background info on your situation, there's little I can do. But the problem might be that to large mcode-blocks mess up your float-placement. So I would suggest you try to make the mcode-blocks float aswell (there is an option for that in the listings package).

02 Aug 2006 Rafael Fuenzalida

Great package for latex!!!!!

16 Nov 2006 Someone Somewhere

Use of this package causes all figures in the document to disappear. Anyone know what's up?

16 Nov 2006 Someone Somewhere

I've discovered that the figures in the document will disappear when using
\includepackage{color}
and
\includepackage{doublespace}
at the same time

01 Dec 2006 Julia N

So useful for my thesis - thanks a lot, Florian! My modification is to include both bold/italics AND colors for bw printing of color document. Achieved by upgrading 'else' statement in \bw to have these commands:
keywordstyle=\bfseries\color[rgb]{0,0,1},
commentstyle=\itshape\color[rgb]{0.133,0.545,0.133}

09 May 2007 Micke Malmström

Where do you put the file and how do you use it?

10 Jun 2007 sebastian swose

working well. thank you a lot!!

14 Jun 2007 Micke M

Just put the file in the same place as the tex-file and it works great. Also keep track of how many caracters that fits in a line...

22 Jun 2007 fernando falconi

Thanks Florian ..your program is the best!!!

24 Jul 2007 faraz mirzaei

Thanks. This is great. You just need to put your code between:
\begin{lstlisting}
YOUR CODE HERE
\end{lstlisting}

or use \mcode{YOUR Code} for inline use.

This is very good and convenient.

26 Aug 2007 Sara Bernardez

Could anybody tell me how to install or whatever this .sty file, please?I'm new with latex and matlab.I get how to use it but I need Latex to reconise the file.Thanks.

29 Aug 2007 Florian Knorn

@ Sara: just put it into the same path as your tex file. Other than that, do some more reading ;-) Good Luck!

11 Nov 2007 Florin Stoican

just what I needed

02 Dec 2007 emma thompson

This was great!! Perfect for my thesis! But is it possible to change the font size??

03 Dec 2007 Florian Knorn

@ Emma: Of course it is, look at the line with the comment "% use font and smaller size"...

27 Dec 2007 Long Chen

Great. You can dig into sty file to change the font and spacing. I like the $$ in comments a lot.

Is it possible to link to m file directly in latex? Then the comments will be automatically updated if I change the m file.

28 Dec 2007 Florian Knorn

Of course it is, use the \lstinputlisting command... Glad you find it useful :-)

08 Mar 2008 Nash Borges

amazing! i was looking everywhere for something simple to include some matlab code into latex and this is perfect!

20 Mar 2008 Ferry K

Great Work! Works like a charm.

10 Apr 2008 Michel de Jong

Thank you very much. Looks great in my reports ;-)

30 Apr 2008 Raynor Vliegendhart

It works great. Only one slight problem though. It doesn't really like dollar signs in comments. (But that can be circumvented by escaping to LaTeX and then escape the dollar sign).

08 May 2008 Mira Mitra  
16 Jun 2008 Alessandro Farini

Very good! Easy to use and very useful

17 Jul 2008 Val Schmidt

This works great, except it doesn't respect a \begin{singlespace} directives. Any idea how to include matlab code into a double spaced document, but have the code itself come out single spaced?
Thanks, Val

24 Jul 2008 Bill McKeeman

Lovely. I had a lot of trouble just getting the dot-sty file into usable shape. After the download I had an email message wrapped around an HMTL file inside of which was a tab-infested STY file with many =D3 and other character renamings. The text spanned 150 columns. It took about an hour to comb all the gratuitous shrek out so I could use it. Thanks. /s/ Bill

29 Aug 2008 Nikola Toljic

Thanks.

24 Sep 2008 Al Makedonskiy

AWESOME

14 Oct 2008 Dan Barker

Works great, thanks alot :)

Just a couple of suggestions, (i) words that come after a command that aren't in parenthesis should be highlighted purple, e.g. in "hold off", the off would be purple. (ii) is it possible to add a nice heading that says what the file name is or something?

17 Oct 2008 Jason Moyle

Great. Just what I needed. Easy to use and saved me heaps of time when writing my thesis.
THANKS

22 Oct 2008 Roland Kaufmann

A note on its usage: If you save your file in UTF-8 format (default on many Linux systems), then escape-to-LaTeX using the section sign will not work properly. You'll have to use inputenc with e.g. latin1 option in LaTeX and then make sure your files are saved in that charset (%%% coding: latin-1; local variable in Emacs for instance).

28 Oct 2008 David Legland  
17 Jan 2009 Florian Knorn

Thanks for pointing that out, Roland.

As I'm getting a lot of requests as to how to actually use the package, I've now thrown together a small demo-document --- I guess an example says more than a 1000 words ;-)

=> http://www.knorn.org/misc_files/mcode_demo.zip

07 Feb 2009 Dennis Birchenough

I have a parameter called "Ndelta". This program converts everything properly, except for all instances where this parameter is, it shortens it to 2 characters: N and the symbol for Delta. In other words, instead of spelling out delta, it gives the symbol Delta. Otherwise, fantastic program! I love it!!

07 Feb 2009 Dennis Birchenough

Nevermind...I just found the "literate" section and commented out the {delta} example. :) Great program!

07 Feb 2009 Dennis Birchenough  
12 Feb 2009 Stephen Stegall

Beautiful Work. Thank you.

16 Feb 2009 michele pace

great work, it saved me a lot of time. Thank you.

27 Feb 2009 Thomas

Hi there,
I like this package. However, I use a lot of apostrophes like [lpfb,lpfa]=butter(6,100/fn,'low') in my m-file. If I use normal documentclasses such as book, article or report I do not have any problems in compiling.
BUT, when I am using the documentclass "beamerclass", I cannot include any m-files, if there are any apostrophe (') in my m-file. After removing all apostrophes latex can integrate my m-file.
Do you have the same problem? Does anybody know, how to solve this problem.

I used a simple example:
butter.m containing: [lpfb,lpfa]=butter(6,100/fn,'low')

tex-file:
\documentclass{beamer}
\usepackage[framed,numbered]{mcode}
\begin{document}

\frame{
\lstinputlisting{matlab/butter.m}
}
\end{document}

Help appreciated!
Cheers, Thomas

25 Mar 2009 Ariel Balter

Thanks so much for making this! Found a small bug -- after using \lstinputlisting{...}, the environment \texttt{...} doesn't work anymore. I overcame it by using \mcode{...} because that was sufficient for what I needed. But perhaps someone can fix the problem.

Does anyone know of a way to have a \label to be able to \ref to a listing, a title for the listing such as:
Listing 1.
....
and a caption?

Thanks, Ariel

25 Mar 2009 Ariel Balter

I found out how to add labels, captions:

\lstinputlisting[label=lst:mylable, caption={\mcode{mycode.m}}]{mycode.m}

I am still having trouble with a "p" float. The code runs off the bottom of the page and does not continue. Is there a switch somewhere to help with that?

31 Mar 2009 Andrew Wind

Excellent tool.

Does anybody have a fix for adding the cell (%%) formatting? I'd like the horizontal rule and the first line bolded as it appears in the editor.

06 Apr 2009 Florian Knorn

Sorry Andrew, that feature would have to be provided by the listings package...

18 Apr 2009 TheFarmer

This worked excellent, and the code becomes very nice in LaTeX.

The strings are given the correct, purple color, but when you use the matlab command:
hold on
the 'on' is given the same purple color in the matlab editor, but not in the LaTeX file. Could you please take a look at that?

I would also recommend commenting out the delta sentence from your source code. I think the majority would prefer keeping their original variable names.

19 Apr 2009 TheFarmer

Btw the lack of coloring also applies to other things, like
hold off
syms x y z
etc.

19 Apr 2009 TheFarmer

Another thing I noticed is when you use ... to split an expression over several lines. In the matlab-editor they are blue, while they appear green in LaTeX.

This is just nitpicking, but it would still be nice!

Hope you can have a look at this issue as well, since I have no idea how to implement it myself.

23 Apr 2009 TheFarmer

A possible workaround for the coloring issue I mentioned above, is to replace all instances of code of the type:
hold on
format rat
legend boxoff
with the equivalent function calls:
hold('on')
format('rat')
legend('boxoff')

This way the code works the same way, and the syntax coloring in LaTeX is perfect.

13 May 2009 Erik Erikkson  
16 May 2009 Erik Erikkson

Note: For anyone wanting to include physical units and source code in the same report.

Use of the textcomp package in this file (required for 'upquote') breaks \celsius used by gensymb, siunitx and other unit packages.
Temporary fixes are to either use $^\circ$C in place of \celsius, or to set upquote=false and comment out the following lines in mcode.sty.

\ifx\textquotesingle\undefined%
  \RequirePackage{textcomp}%
\fi

This is hopefully a temporary fix until Florian's next revision.

22 Jun 2009 Uwe Lelke

not bad, but there are still problems with recognizing keywords and strings correctly

15 Jul 2009 Bernd

exactly what I was searching for

19 Aug 2009 Alvin

Hello,

I noticed the m-code package creates a bug in the itemize environment. When I included the m-code pagkage the itemize environment is corrupted. Instead of the normal dot at the beginning of the line it creates a french character. At first I thought it was something to do with my latex doument, but then I i created an itemize on the demo m-code and the same bug exists there too. Is there any way to fix/bypass this?

19 Aug 2009 Alvin

It seems the textcomp package is the issue. A proper map file has to be found for the font. As a suggestion user cm-super to fix it. Otherwise if you're lazy like me use the courier package and get rid of the textcomp package. This comes with a warning though, since you can no longer use the option 'upquote' to make upright quotes.

Cheers

19 Aug 2009 turker

as uwe already mentioned, 'end' is not always used to finish a control statement; for example it is also used to indicate the last index of a matrix. in this type of situations m-code still prints the 'end' in blue. either package should be improved or a way should be created by which user becomes able to the change colour manually. (e.g. \textcolor doesn't work in lstlisting environment.)

19 Aug 2009 turker

though one solution is replacing end lstlisting environment with:
§\fontfamily{pcr}\selectfont end§

20 Aug 2009 Florian Knorn

@ Alvin: Sorry, I never got the error you have. But thanks for pointing out a work-around, for those that do not have a "proper" TeX installation, including all fonts and map-files. You're right, the 'textcomp' package is only there for the upquotes. The idea of using that comes straight from the listings documentention (Section 4.7).

@ turker: Thank you very much for sharing your work-around for the 'end'-issue. While it's not too sleek, it works very well! Unfortunately there's little I can do to fix this in a more elegant way. As I said many times, the actual work is done by the listings pacakge, and as far as I can see it doesn't support different colouring of the same keyword...

14 Oct 2009 Laurens

Thanks for this great LaTeX package!

I wanted to include a m-file which has very long lines, too long to display in a single line in my document. After reading the listings user reference I found how to do this:

\lsinputlisting[breaklines=true]{file.m}

you can also show only a few lines, for example only line 4 to 15 of the file.m file:

\lsinputlisting[firstline=4, lastline=15]{file.m}

14 Oct 2009 Lagrange

Hi!
Really great job - looks really fancy and works as long as you use it in a document. I have trouble using the package in the "Appendix":
./appendix.tex:5:Environment lstlisting undefined. \begin{lstlisting}

14 Oct 2009 Lagrange

Sorry c&p the wrong error message:
./Thesis.tex:51:Undefined control sequence. \begin{document}

Y is there no "Edit"-function?

15 Oct 2009 Lagrange

Downloaded now the newest version of mcode, which gave a little more information about the error. Any ideas?

[LaTeX] finished with exit status 1
./mcode.sty:181:Package keyval Error: upquote undefined. }
./Thesis.tex:50:Undefined control sequence. \begin{document}
./Thesis.tex:50:Argument of \caption@make has an extra }. \begin{document}

23 Nov 2009 Daniel

Brilliant, thank you! One issue though - I can't seem to get my "..." in the m-files to show up as blue.

24 Nov 2009 Florian Knorn

@ Lagrange: I've used the package in the appendix many times and it works fine. I suspect (because of the upquote error message) that you have a slightly outdated version of the listings package installed. Make sure you have the latest version.

@ Daniel: I know, I know, I'd love to have this fixed too, but such functionality appears to be quite unique to the Matlab scripting language, and the listings package (which does all the work) does not support such behaviour. I've mailed the package maintainer already, but he never got back to me...

25 Nov 2009 Uwe Lelke

@ Daniel: You may wanna take a look at the following programm:

http://www.mathworks.com/matlabcentral/fileexchange/24515-m-code-to-latex-converter

which takes care of the three-dot-, the end-as-index- and several other little problems as well.

07 Dec 2009 Cat

Hello,

I was just wondering what change you make in the "% use font and smaller size" comment in the sty file to make the m-file font smaller. Thanks for the great code!

08 Dec 2009 viktor

The file works great all over the document, also in the appendix. so thank you Florian!

but i have one question, if i only compile a small part of a m-file for instance \lstinputlisting[firstline=5,lastline=8]{plo... is there a way to edit the numbering in the latex file because it always starts with 1 and not the original line number from the m-file

08 Dec 2009 viktor

never mind. already guessed it!
just add \lstinputlisting[firstnumber=5,firstline=5,lastline=8]{plo..

now i dare to say the file is perfect, it saved me a lot of time!

10 Dec 2009 Florian Knorn

@ Cat: Replace the "\footnotesize" in that line by "\tiny". That's as small as it gets with standard fontsize commands. If you need even smaller fontsize, you'll need to remove this "\footnotesize" and replace the first line in the Config-Section with something like "\def\lstbasicfont{\fontfamily{pcr}\fontsize{3}{4.6}\selectfont}"...

25 Dec 2009 Cat

Great thanks so much, I've got it to print smaller. The code is wonderful!

14 Jan 2010 Rasmus Kinnerup

Works very well.... I think it would be good to include a guide on how to change the font size. I found it, but it was not that easy.

14 Jan 2010 Florian Knorn

Updated the demo document.

@ Rasmus: I've shuffeled things around a little bit in the source code, and added a description to make it really clear how to change the font size.

@ turker: I've modified the "solution" to the end/end problem; you can now use "iend" in the source code to get "end" typeset in black (when used to reference the last element in vector...)

@ All: If you use the LaTeX escape functionality in comments, there's now an easy way of getting that typeset in the same style as the rest of the comment, see the demo document ...

14 Jan 2010 Ita Atz

Hi! where can I get the lastest version of lstlisting?
I read that it would solve the upquote probelm!
I'm writing my thesis and I have to include a lot of matlab code with '...', so I really need it!!

Thanks for helping

17 Jan 2010 viktor

Hello i am still using this package with great pleasure but is there a way to specify the path where the package looks for the files? just the same with graphics

\graphicspath{C:/Documents and Settings/All Users/Documents/My Pictures/Sample Pictures/}

forinstance
\listingspath{C:/........} (doesn't work, already tried}

because if i type the full path name within the lstlistings{...} command it does not work. I think it is due to the fact that the path name has spaces in them. Is there a way to solve this problem in the same way with graphics?

17 Jan 2010 Florian Knorn

Hi Viktor, I don't think the listings package has that feature, sorry ...

I don't know how exactly you have to specify the path on Windows systems, but I always thought Windows uses backslashes ( \ ) in the path names, not forward slashes ... Could that be the problem?

Otherwise, I can't really help you, sorry ! Maybe ask the developers of the listings package ...

17 Jan 2010 viktor

Heej Florian,

Windows does use backslashes but because ' \ ' js a latex command you have to use '/ ' it is just weird that

\graphicspath{C:/Documents and Settings/All Users/Documents/My Pictures/Sample Pictures/}

works fine. it is able to find the pictures. but when i type

lstlisting{D:/my documents/MATLAB/plotter.m}

 it is unable to find the file but when you type

lstlisting{D:/latex/mfilefolder/plotter.m} (so with no spaces) it works fine. Thanks for the help but i will try to ask the listing developers

21 Jan 2010 Kevin  
26 Jan 2010 Alex  
01 Feb 2010 Milan Rapai

Great work

10 Feb 2010 Jan Fousek

Very useful. To be able to use it with beamer class, I had to use [fragile] atribute on the frame containing the lstlisting block.

\begin{frame}[fragile]
...
\begin{lstlisting}
...

25 Feb 2010 Andre Brito

Hello,
was anyone able to make it work together with MiKTeX 2.8?

06 Mar 2010 Haseeb Chaudhary

Worked perfectly!

13 Mar 2010 Jared

Forgot my comment. Worked great. Thanks for writing. I found that a floating figure was placed in the middle of the code box so the code was split. Just used \clearpage to prevent the floats overlapping.

12 Apr 2010 durg ch

Hi,Can any of you please tell me how to insert the matlab code into latex file which I have already written.I Have seen the above comments but I ddnt get it clearly.Do I need to install anything else.Please do suggest in a clear manner by considering me as beginner.Thanking you all.

12 Apr 2010 Florian Knorn

@ durg ch: Please see the file description above, at the end of it is a download link to a small demo document (including LaTeX sources) where you can see how the package is used . . .

21 Apr 2010 Kamil Wojcicki

Works great, thank you.

28 Apr 2010 Vamshi Yamsani

Thank you so much.

31 May 2010 Fritz Diorico

Hello! This is really great. Thank you very much for this. I just have a small question. Some of my lines are really quite long and when I compile my tex file, the code is printed out to the borders of this page. How can I wrap the long lines of my source code? Sorry if this is a question due to lack of the LaTeX knowledge. Thanks.

01 Jun 2010 Florian Knorn

@ Fritz: Sorry, as far as I know the listings package doesn't support automatic line wrapping... This means, you'll have to manuall edit your code to make it fit into your code "box" (for me that's about 78 characters for instance). A little tip: Over in the MATLAB editor you can set a character per line number after which you can have stuff automatically wrapped, or you can wrap things manually but use the vertical line it produces in the editor as a guide...

23 Aug 2010 Ariel Balter

Can someone please tell me what the heck that symbol is to escape listing mode and insert LaTeX in my code listing? More importantly, how the heck to I type it?

23 Aug 2010 Florian Knorn

@ Ariel — How the heck can I know which keyboard you are using? That § symbol is called "Section Sign" (http://en.wikipedia.org/wiki/Section_sign) and on my Mac Keyboard (US layout) I can get it by pressing Alt + 6

08 Sep 2010 Thomas Weingarten

I used mcode.sty on my windows pc and it is brilliant.

But use it on my new mac with texmaker / texliveutility.

Does anybody know how to add this package ?

08 Sep 2010 Florian Knorn

@ Thomas — There's no difference between the operating systems. The easiest way would be to just put it in the same path as your .tex file . . .

13 Sep 2010 Ken H

This is just a ridiculously, remarkably useful and streamlined package. Thanks so much for putting it together.

I hate to ask such a simple question, but I've googled my head off and can't get it: the mathescape doesn't work for me! I change the .sty file to say mathescape=true,escapechar=§, but when I type §\textpipe§ within a {lstlisting} environment, I just get "\textpipe" when I compile. If I add dollar signs, I get a pipe that looks right, but if I try to cut and paste if from the .pdf, it doesn't copy correctly into the new document. However, if I use the \textpipe command in the regular latex environment, cut-and-paste works fine.

In fact, even using §x^2§ in the {lstlisting} environment doesn't produce formatted text. Either $x^2$ or §$x^2$§ works, but that solution doesn't work for the symbols I need...

I'm using the tipa package for the \textpipe.

Thanks so much to anyone who can help!

13 Sep 2010 Ken H  
13 Sep 2010 Florian Knorn

@ Ken H — thanks for your positive comment. I've had a look at your problem, but I can't reproduce it. Using my demo document (see link at the top), leaving mathescape=false as set by default in the document and including the tipa package, I can simply type §\textpipe§ to get the pipe showing up just fine. Not sure why this is not working for you... Try with the demo document, as this is a very barebones document. If it works there, but doesn't with your document, then it's almost sureley some package clash...

13 Sep 2010 Ken H

Ah hah! As with so many of us, you could have just said "Read my demo, dummy." For some reason your section symbols show up as "§" (that is, preceded by a A with a carrot) on my computer and when I left that symbol off, the escape didn't work. Thanks for your patience!

30 Sep 2010 Dimitri Yatsenko  
11 Oct 2010 Charlie Matlack

Easy to use and polished output, also saves space over using \verbatim! Thanks very much for writing this!

24 Oct 2010 Zhenyu He

Great package! I have a question about using it. In my mablab code, I have a variable name 'delta', and it becomes a triangle in pdf file. I tried that 'Delta' is fine, 'omega' is fine. But 'delta' is not. How can I solve this problem?

25 Oct 2010 Florian Knorn

@ Zhenyu -- glad you like the package. Replacing "delta" by "Δ" is actually intentional. But If you don't want that, simply remove the line "{delta}{{\tiny$\Delta$}}1% \Delta" from the file.

01 Nov 2010 Thomas Arildsen

This looks great - I have not tried it very much yet, however. Maybe you should consider putting this on CTAN.

21 Nov 2010 Mikhail Konnik

 Huge thanks, Florian, it is a great soft! Works smooth like a charm.

 

23 Nov 2010 Marcelo Perlin

Thanks for sharing it Florian. I just used it in the documentation for a package I've wrote and it looks beautifull.

30 Nov 2010 Nick

Hey Florian,

Great package, but I have one small problem. Whenever I load my m-file I can't use LaTeX typesetting by using § \latex §. It is nog recognized. Also not in your demo file. And when I set mathescape to true it recognizes math mode, but it typesets the math stuff in black. Help?

01 Dec 2010 Florian Knorn

@ Nick: Hm, works find for me... What version of the listings package are you using (try "texdoc listings" in a command line)

01 Dec 2010 Nick

The .pdf that opens (in MiKTeX prog files) says:
The Listings Package
Copyright 1996–2004, Carsten Heinz
Copyright 2006–2007, Brooks Moses
Maintainer: Brooks Moses <bmoses@dpdx.net>
2007/02/22 Version 1.4.
Does that help?
The thing is, when I typ MATLAB code in texworks itself everything works as it should. It is only when I try to load an m-file that things go pear-shaped.

01 Dec 2010 Florian Knorn

Hm, looks like you do have the most recent version of listings. I've just tried it myself with the demo document, including some external .m file with § \LaTeX § in it and it works fine...

Have you tried including just a very simple m-file? Do you still get the same problem?

It's hard to debug things this way, maybe you can throw together a minimal non-working example so I can see for myself...

01 Dec 2010 Nick

Ok here's my files. I also put mcode.sty in the .zip file. I suppose it's the same, but you never know.
http://db.tt/rnZVT34

Thanks in advance!

01 Dec 2010 Florian Knorn

@ Nick: Ok, figured it out -- your m-file needs to be in UTF-8 encoding for some reason (the one you sent me was Windows Latin 1). Not 100% sure why this makes a difference (but I suspect it has to do with the way the section sign § is encoded), but this will fix it for you. As an alternative, you could try to use a different math-escape character.

01 Dec 2010 Nick

@ Florian: Thanks for the debugging! I will try and set MATLAB to UTF-8 encoding.

02 Dec 2010 David Hann

I can't seem to get even the demo to work.
I downloaded listings.sty into the same folder from google and all the other packages
! Undefined control sequence.
\lst@SelectCharTable ...eveloperSCT \lst@DefRange
                    \ifx \lst@Backslash \relax...
l.25 ...demo \mcode{for i=1:3, disp('cool'); end;}
                    uses the \verb|\mcode{}| ...

?
! Undefined control sequence.
\lst@SelectCharTable ...eveloperSCT \lst@DefRange
                    \ifx \lst@Backslash \relax...
l.29 \begin{lstlisting}
                    
?
! Undefined control sequence.
\lst@SelectCharTable ...eveloperSCT \lst@DefRange
                    \ifx \lst@Backslash \relax...
l.31 ...font\LaTeX in it: $\mcommentfont\pi x^2$§
                    
?
[1
here's the errors i can find
I'm using MikTex 2.8 on windows 7

02 Dec 2010 Florian Knorn

@ David: Sorry, try to install the listings package properly; the package requires more than just the .sty file as far as I know...

20 Dec 2010 Jerome  
22 Jan 2011 Sterren Latsky

Fantastic latex module. I have one issue with the syntax highlighting though; when I clear a variable with the code

clear varname

in Maltab, the variables are in purple. I thought that this might be the package not understanding the method of passing variables in the form of

function 'char_variable' matrix_variable

as opposed to

function('char_variable',matrix_variable)

but when I write the code

load 'data.m'

It formats the 'data.m' in purple as I would expect. Maybe it's just something curious about the clear keyword.

Great package though! Thanks!

04 Feb 2011 mathworks2011

Excellent!

23 Feb 2011 Serdar Tombul

Perfectly working. But it would be good to add the wordwrap feature as sometimes the code might be longer than the textwidth.

15 Mar 2011 Hani

Thanks it is really nice and easy, but it seems to me that if you have a long code line, there will be problems.

15 Mar 2011 Petr

Thank you! Great tool!

This patch corrects long code line handling:

--- C:/Program Files (x86)/MiKTeX 2.8/tex/latex/mcode/mcode.old.sty Tue Mar 15 13:16:32 2011
+++ C:/Program Files (x86)/MiKTeX 2.8/tex/latex/mcode/mcode.sty Tue Mar 15 13:33:53 2011
@@ -218,5 +218,10 @@
   \fi
 \fi
 
+\lstset{ % deal with long code lines
+ breaklines=true, % break long code lines
+ breakatwhitespace=true % ... only at whitespace
+}
+
 \endinput
 %% End of file `mcode.sty'.
\ No newline at end of file

15 Mar 2011 Florian Knorn

@ Petr: Thanks for the hint. I could have seen this earlier ;-) Anyway, just revised the package to include this (check documentation).

31 Mar 2011 Geoffrey

Thanks Florian, This is a very useful tool!

31 Mar 2011 John D'Errico

Nice

29 Apr 2011 Sweidan Omar

Dear Florian!

Is your package available in the TeX catalogue, so I can use it with TeX package manager?

thanks, and keep up the good work

02 May 2011 Florian Knorn

@Sweidan: So far no; might look into it one day, but have no time for that right now, sorry!

01 Jun 2011 Bruno

Hi Florian,

Thank you very much for your file! It is really great! I would like to propose a workaround for the proper highlighting of the word "end" as a keyword and not as the last element of an array. My \lstset command looks like this:

\lstset{language=Matlab,
keywords={break,case,catch,classdef,continue,else,elseif,end,for,function,global,if,otherwise,parfor,persistent,return,spmd,switch,try,while},
basicstyle=\ttfamily,
keywordstyle=\color{blue},
commentstyle=\color{GreenComm},
stringstyle=\color{PurpleStr},
numbers=left,
numberstyle=\tiny\color{gray},
stepnumber=1,
numbersep=10pt,
backgroundcolor=\color{white},
tabsize=4,
showspaces=false,
showstringspaces=false,
comment=[l]\%,
morecomment=[l]...,
morecomment=[s]{\%\{}{\%\}},
morestring=[m]',
morecomment=[s][\color{black}]{(end}{)},
morecomment=[s][\color{black}]{,end}{)},
morecomment=[s][\color{black}]{(end,}{)},
morecomment=[s][\color{black}]{,end}{,},
morecomment=[s][\color{black}]{\{end}{\}},
morecomment=[s][\color{black}]{,end}{\}},
morecomment=[s][\color{black}]{\{end,}{\}},
}

Notice the last "morecomment" lines. They "cheat" by saying that if you find any of those combinations, then make them black.

Thanks!

31 Jul 2011 Emil

A great package Florian! Being a complete beginner to LaTeX I don't dare messing with your .sty file.

Could you - or anyone here - tell me how I need to modify it if I want to display

[~,ind] = max(vec);

properly? The tilde does not show up the way it should...

Thanks a lot

10 Aug 2011 Florian Knorn

@ Emil: Comment out Line 229.

27 Aug 2011 Derek O'Connor

@ Florian: that just gives you a tilde. What is needed is $\sim$.

I made this change in mcode.sty:

226 \lstset{%
227 literate=%
228 {~}{{$\sim$}}1 % \neg

28 Aug 2011 Derek O'Connor

Better still, use

228 {~}{{$\sim\,\,$}}1 % \neg

07 Sep 2011 Oscar Edvardsson

Having problems with å, ä and ö. They are replaced by a simple space. Any ideas? Using this in my Latex-preamble:
\usepackage[T1]{fontenc}
\usepackage[swedish]{babel}
\usepackage[utf8]{inputenc}

Other than that, works like a charm!

12 Sep 2011 bcoss COSS

This package works great on its own, but I can't get it to work with my thesis. I suspect there must be some kind of conflict with my loaded packages. The error I get is: ./chapter1/source/section1-4.tex:8: LaTeX Error: \begin{document} ended by \end
{figure}. This happens with any figure in the thesis, as long as its the first one. The document compiles fine if I comment out the mcode usepackage and mcode content sections. Any help please?? I am stumped, spent almost 4 hours on this already. Thanks.

I am using the document class and the packages I have loaded are:
\usepackage{graphicx}
\usepackage[center, format=plain,labelsep=period]{caption} %Fixes Figure label, Figure #: to Figure #.
\usepackage{subfig} % multiple figures in a float
\usepackage{xfrac} %better math fractions
\usepackage{mdwlist}
\numberwithin{equation}{section} %number equations according to the sections
\usepackage{float} %float package
\usepackage{epstopdf} %support for eps to pdf with pdflatex
\usepackage{array} %table array support
\usepackage{multirow} %advanced table rows and columns
\usepackage{fixltx2e} %float placement fix
\usepackage[a]{esvect} %vector symbol support
\usepackage{appendix} %appendix support
\usepackage[framed,numbered,autolinebreaks,useliterate]{mcode}
\usepackage{amssymb}
\usepackage{amsxtra}
\usepackage{,eepic,amssymb,srcltx}
 \usepackage[super, numbers, sort&compress]{natbib}

13 Sep 2011 bcoss COSS

I've narrowed my error above down to an issue with adjusting the line spacing in footnotes and figure captions from 1.5 (body) to 1. Hard to replicate, will most MWE if I get one.

13 Sep 2011 Florian Knorn

@ Oscar -- sorry to disappoint you, but the listings package doesn't handle unicode, as far as I know.

22 Sep 2011 simmal  
03 Oct 2011 Rupert Wurnitsch  
05 Oct 2011 Ivan Brezani

Great

08 Oct 2011 Thomas Schmidt

Thanks! This is a very thorough piece of software extension. Works right out of the box, just follow the instructions in the pdf document included.

10 Oct 2011 Malcolm Lidierth

Worked a treat - even for this LaTeX newbie. It took me a while to click that some of the things I wanted (like controlling whitespace) were available by using options available already in the listings package

ftp://ftp.tex.ac.uk/tex-archive/macros/latex/contrib/listings/listings.pdf

(Should have read the help int the sty file more carefully!)

12 Oct 2011 Niko

Thanks Florain, this package works really great!

One question, though: I include some code from a .m file like this
\lstinputlisting[firstline=6, lastline=18]{myscript.m}

Your package will display line numbers, but they are always numbered starting with 1. In the example above, it would be great to see the actual line numbers as you would see them in the Matlab editor, i.e. numbered from 6 to 18. Is this possible with your package?

12 Oct 2011 Florian Knorn

@ Niko: Again, my package isn't doing any work, it just configures the listings package for you. Anyway, I just had a look at the listings documentation for you. I didn't see an option for this directly, but what you can do is add in your case firstnumber=6 to the \lstinputlisting options to have the numbering start with 6. This will do what you want.

21 Oct 2011 David N  
16 Nov 2011 Axel Lødemel Holene

Dude, this is sweet! Thanks for this awesome package! Showed it to my (lab) partner, and he was extatic!

The only "draw-back" for me here is that LaTeX refuses to typeset my matlab comments in LaTeX style. That is, neither
 - %Sets $k_1$
nor
 - %Sets k_1
gives out the number as subscript. I'm working with Texshop for mac. Could you (or someone) please help me out? Thanks! =)

16 Nov 2011 Florian Knorn

@ Axel: Thanks for your kind words. Have a look at the demo-document included in the package. It shows quite clearly how you can get LaTeX to parse fancy stuff in your comments.

16 Nov 2011 Axel Lødemel Holene

Now I'm embarrassed, I didn't see the .tex-demo untill you mentioned it. But actually it still doesn't solve my problem, just made me conscious that I wasn't very precise:

I have a mile long matlab code which I'm implementing in an appendix using
\lstinputlisting{Resources/Matlab/plots.m}.

Is there a way not having to write the code directly in the .tex-file to get the fancy LaTeX typesetting?

17 Nov 2011 Florian Knorn

@ Axel: Sorry, still not sure I understand your question. Can you email me directly? Thanks.

22 Nov 2011 Cory Simon

Amazing. Thank you!

24 Nov 2011 Maxi Leinenbach

Quiet Amazing! Does somebody know how to transform cell arays into latex for example
Test={'hans' 'peter'}
/mcode{Test={'hans' 'peter'}} does not work...
Thanks

24 Nov 2011 Florian Knorn

@Maxi: You can indeed do this provided you use the original command provided by the listings package. So have a look at the .sty how the \mcode command is defined. Basically, in your example, instead of using \mcode, use this:

\lstinline[basicstyle=\lstbasicfont\small]|Test={'hans' 'peter'}|

09 Dec 2011 David

Thanks Florian, you made my day!

15 Dec 2011 Glauber Miranda

Dear Florian,
Many thanks for your job. It saved me a lot of work after being lost for some days with my thesis.
The package is Amazing!

15 Dec 2011 Ana Pabon

Thank you!

26 Jan 2012 Rob H

Many thanks Florian. This has saved me hours making beamer slides for my students.

I do get an options clash when trying to use "bw" but can't trace it - small worry!

Please login to add a comment or rating.
Updates
17 Nov 2005

added a setting to make the appearance cleaner, and also added a little tip by one of the users.

28 Aug 2008

-Cosmetic changes in the source code
-Updated the description a bit

01 Dec 2008

fixed misconfiguration, further tidied up source code and comments

17 Jan 2009

I've added the link to a demo-document that shows how to use the package.

04 Mar 2009

A user pointed out a problem when this package is used together with the beamer package, which is now fixed.

14 Jan 2010

Tweaked some descriptions, added feature to distinguish formatting between "end" and "end" to either end a clause or access the last element in a vector, updated demo document

01 Feb 2010

Added MATLAB block-quote support (which a user kindly pointed out to me): %{ block comment %}

21 Mar 2010

Fixed typo in documentation regarding §...§

04 May 2010

For some reason, the listings package replaces the normal "minus" by a "math minus", which causes problems when you want to use the source code from the final pdf in an application again . . .

15 Mar 2011

Now supports automatic line breaking. Added two new options, and now included the demo document in the download.

11 Aug 2011

Finally "end" and "end" are automatically told apart and coloured correctly.

26 Aug 2011

Small bugfix

Tag Activity for this File
Tag Applied By Date/Time
development environment Florian Knorn 22 Oct 2008 07:52:46
source code highlighting Florian Knorn 22 Oct 2008 07:52:46
latex Florian Knorn 22 Oct 2008 07:52:46
tex Florian Knorn 22 Oct 2008 07:52:46
mcode Florian Knorn 22 Oct 2008 07:52:46
package Florian Knorn 22 Oct 2008 07:52:46
soure Florian Knorn 02 Dec 2008 11:27:07
format Florian Knorn 02 Dec 2008 11:27:07
highlight Florian Knorn 02 Dec 2008 11:27:07
syntax highlighting Florian Knorn 02 Dec 2008 11:27:07
bugs Alvin 19 Aug 2009 14:04:28
bugs Dominic Barone 07 Dec 2009 15:31:38
syntax highlighting Jim N. 15 Jan 2010 03:37:22
latex Jim N. 15 Jan 2010 03:37:27
source code highlighting Jim N. 15 Jan 2010 03:37:33
bugs Milan Rapai 01 Feb 2010 09:45:17
typeset Florian Knorn 22 Mar 2010 09:33:56
typesetting Florian Knorn 22 Mar 2010 09:33:57
highlighting Florian Knorn 22 Mar 2010 09:33:57
bugs durg ch 12 Apr 2010 08:45:59
development environment durg ch 12 Apr 2010 08:46:03
source code highlighting durg ch 12 Apr 2010 09:08:14
bugs Erik 07 May 2010 09:04:18
latex Lisa Majmin 30 Nov 2010 10:21:21
bugs Florian Knorn 15 Mar 2011 09:22:46
mcode Emeline 05 May 2011 03:24:33
package Emeline 05 May 2011 03:24:40
tex Georgios Zonzilos 12 Dec 2011 17:48:36
bugs Ricardo Lissen Pérez 17 Dec 2011 05:41:31

Contact us at files@mathworks.com