File Exchange

image thumbnail

m-code to LaTeX converter

version (153 KB) by Uwe Lelke
This m-file (with GUI) converts m-code into a tex-file for including in a LaTeX-document.


Updated 12 Sep 2012

View Version History

View License

This file lets you very easy INCLUDE COLORED M-CODE in your LaTeX-file.

After you run this m-file "m2tex.m" and inlcude the output tex-file in your LaTeX document, you will experience NO DIFFERENCE IN THE APPEARANCE to the look of the m-code in the Matlab Editor. (except for the apostrophs)

There are SEVERAL WAYS TO EXECUTE the program.
1. Run the file by pressing F5 oder click the "Run" button in the Matlab Editor, while the m2tex.m file is open or type "m2tex" in the Command Window.
==> The program will open the GUI and the rest goes from there.
2. Call the program from the Command Window or another m-file with at least one option. The order of the options is not important. For example:

m2tex('testfile.m','testoutputfile.tex', 'no_num','bwc')

There are ONLY TWO STEPS necessary to do to include your code:
1. Run "m2tex.m" (with the desired m-file to include).
2. Insert the code into your main LaTeX-document by adding the whole "filename.tex"-file with \include{filename} or \input{filename}.

For Example:
\begin{singlespace} % only optional % you need \usepackage{setspace}
\input{outputfile} % output from "m2tex.m", but without the extension ".tex"
\end{singlespace} % for changing your linespacing

- recognizes all keywords, strings and comments
- recognizes all indents and tabs
- recognizes cell titles
- writes all recognized objects correct in a tex-file
- uses original Matlab colors
- the font looks almost the same as in Matlab Editor
- tex-file is saved using fontencoding "UTF-8", so that German Umlauts will be written correct
- option for numbered code lines ('num' or 'no_num')
- recognizes a linebreak, but only with a leading space character, i.e. " ..." and only once in a line
- option for input- and output-file (*.m respectively *.tex-file)
- execution via GUI or command line
The conversion of the linebreak works only, if it is once in a line, because the command "regexprep" (code line: 1385) won't work, if you are looking for a string with three dots: '...'

--> If anyone knows why or a solution around the problem, please tell me! thx

Cite As

Uwe Lelke (2021). m-code to LaTeX converter (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (21)

Saurabh Chaudhary

Getting this error. I am using R2020b

Error using figure
Unrecognized property UseHG2 for class Figure.

Error in m2tex>m2tex_LayoutFcn (line 416)
h1 = figure(...

Error in m2tex>gui_mainfcn (line 885)
gui_hFigure = feval(gui_State.gui_LayoutFcn, gui_SingletonOpt);

Error in m2tex (line 148)
gui_mainfcn(gui_State, varargin{:});

Mustafa Alshaqaq

It does not work for my macbook. I get this error:

Error using figure
There is no UseHG2 property on the Figure class.

Error in m2tex>m2tex_LayoutFcn (line 416)
h1 = figure(...

Error in m2tex>gui_mainfcn (line 885)
gui_hFigure = feval(gui_State.gui_LayoutFcn, gui_SingletonOpt);

Error in m2tex (line 148)
gui_mainfcn(gui_State, varargin{:});

Matlab version R2019R.

Badriah Alofi


Juan Muñoz

Anas Musah

Anas Musah

Thanks very! Your package has been very useful to my work! I give you plus 1

Caglan Sevinc

Yao Li


Pablo Ñañez

great script, but I have to change a line in order to make it work for my macbook,
the command
was generating an error. I fix the problem by changing the line 1544 from
option.srcpath = [cd,'\'];
option.srcpath = [cd,'/'];

Isaac Ajao

Very good

Julien Cretel

People interested in this submission may also want to have a look at my matlab-prettifier package:


The package is generally excellent except that I got one problem: there will be one line missing when the m file included is longer than one page; it seems something is needed to handle the page break issue

Pablo Ñañez

Awesome, really nice code!

Ketan Tang

In newer versions of matlab, you can publish your code as html document, which can be perfectly imported into LaTeX

ole andersen

Thanks! a good time saver :D

Kim Skatun

There is a bug if u use latex commands in labels,etc in plot..


another problem that I've just encountered:
error(’The tag ’’%s’’ is not correct.’,boxtag);
% the ",box" is black while "tag);" is blue.


Nice work, but I still have some problems with it:
1. The transpose is still considered a string in the following case:
% .*(comp2) and .*(comp4) are colored as strings.

2. When I use sprintf, then the everything after %s is colored as a string.
handles.(tag) = struct(...
’button’, eval(sprintf(’handles.%s’,tag)),...
’checkbox’, eval(sprintf(’handles.%s_check’,tag)),...
’time’, eval(sprintf(’handles.edit_%s_Time’,tag)),...
’initial’, eval(sprintf(’handles.edit_%s_Initial’,tag)),...
’final’, eval(sprintf(’handles.edit_%s_Final’,tag)),...
’gototag’, tag,...
’path’, path_steps_faults{i});

3. The gui doesn't seem to work. I don't know if anybody else had the same problem, but each button gives the same error:
>> m2tex
??? Error using ==> waitfor
Undefined function or method 'm2tex_gui_app' for input arguments of type 'struct'.

??? Error using ==> waitfor
Error while evaluating uicontrol Callback

I hope you can resolve these problems.


Well done. Really good work. Thanx!

A single problem I have come across:
"if, then, else" only recognized when they are in separate lines. But I'm not so sure what was the problem in my case. I changed it from
if xx==1; do_this_fcn; else do_that_fcn; end
if xx==1
and it worked.

For future versions:
additional input options for 'inputfilename', 'outputfilename' (which would include the directory) and which would help to automatize your script updating routines in a latex based protocol.

David Gingras

Very useful and it works at the first time! I got a small error with an equation with 2 transposes in the same line (e.g. : G=P*C'/(C*P*C'+R)). The parser has interpreted the code between both transposes (') as a string. But it's minor. Good job, thanks!

MATLAB Release Compatibility
Created with R2012b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!