How can I include MATLAB code in my LaTeX document?
The matlab-prettifier
package can be used to typeset MATLAB code and was written in response to a question on tex.stackexchange.
The lstlisting
environment
After including the matlab-prettifier
package in your document via
\usepackage{matlab-prettifier}
you can use the lstlisting
environment to typeset MATLAB code:
\begin{lstlisting}[<options>]
MATLAB code...
\end{lstlisting}
where <options>
is a comma-separated list of parameters whose values are set using key–value pairs (i.e., parameter=value
).
- Note: The
matlab-prettifier
package is built around thelistings
package, enabling use of features provided bylistings
, including parameters within<options>
of thelstlisting
environment. However, somelistings
parameters should not be used, and readers are advised to consult thematlab-prettifier
documentation for further details.
The visual appearance of typeset MATLAB code can be changed using the style
parameter, which supports three values:
Matlab-editor
Matlab-bw
Matlab-Pyglike
The following examples demonstrate how to use those styles.
Examples
Here is an example, using MATLAB code from matlab-prettifier
’s documentation, which applies the Matlab-editor
style:
\documentclass[a4paper]{article}
\usepackage{matlab-prettifier}
\begin{document}
\begin{lstlisting}[style=Matlab-editor]
%% Sample Matlab code
!mv test.txt test2.txt
A = [1, 2, 3;... foo
4, 5, 6];
s = 'abcd';
for k = 1:4
Disp(s(k)) % bar
end
%{
create row vector x, then reverse it
%}
x = linspace(0,1,101);
y = x(end:-1:1);
\end{lstlisting}
\end{document}
This example produces the following output:
The next example set values for the frame
and
numbers
parameters provided by the listings
package:
\documentclass[a4paper]{article}
\usepackage{matlab-prettifier}
\begin{document}
\begin{lstlisting}[
frame=single,
numbers=left,
style=Matlab-Pyglike]
%% Sample Matlab code
!mv test.txt test2.txt
A = [1, 2, 3;... foo
4, 5, 6];
s = 'abcd';
for k = 1:4
Disp(s(k)) % bar
end
%{
create row vector x, then reverse it
%}
x = linspace(0,1,101);
y = x(end:-1:1);
\end{lstlisting}
\end{document}
This example produces the following output:
Using MATLAB code stored in a file
Instead of including MATLAB code directly within your LaTeX document, use the \lstinputlisting
command to import and typeset code contained in an external file:
\lstinputlisting[<options>]{<filename>}
where
<options>
is a comma-separated list of parameters provided as key–value pairs (see above);<filename>
is the path to a file containing MATLAB code.
For example, to import the file sample.m
and typeset it in the Matlab-bw
style you would write
\lstinputlisting[style=Matlab-bw]{sample.m}
The next example places a frame around the code, numbers the lines of code (on the left), and uses the Matlab-bw
style:
\lstinputlisting[
frame=single,
numbers=left,
style=Matlab-editor
]{sample.m}
Select the Open this example in Overleaf
link (see below) to automatically create an Overleaf project which includes the sample.m
MATLAB code file.
main.tex
\documentclass[a4paper]{article}
\usepackage{matlab-prettifier}
\begin{document}
\title{Importing and typesetting MATLAB code contained in a file}
\lstinputlisting[
frame=single,
numbers=left,
style=Matlab-bw
]{sample.m}
\end{document}
sample.m
%% Sample Matlab code
!mv test.txt test2.txt
A = [1, 2, 3;... foo
4, 5, 6];
s = 'abcd';
for k = 1:4
Disp(s(k)) % bar
end
%{
create row vector x, then reverse it
%}
x = linspace(0,1,101);
y = x(end:-1:1);
Open this example in Overleaf (it creates the sample.m
file).
This example produces the following output:
Overleaf guides
- Creating a document in Overleaf
- Uploading a project
- Copying a project
- Creating a project from a template
- Using the Overleaf project menu
- Including images in Overleaf
- Exporting your work from Overleaf
- Working offline in Overleaf
- Using Track Changes in Overleaf
- Using bibliographies in Overleaf
- Sharing your work with others
- Using the History feature
- Debugging Compilation timeout errors
- How-to guides
- Guide to Overleaf’s premium features
LaTeX Basics
- Creating your first LaTeX document
- Choosing a LaTeX Compiler
- Paragraphs and new lines
- Bold, italics and underlining
- Lists
- Errors
Mathematics
- Mathematical expressions
- Subscripts and superscripts
- Brackets and Parentheses
- Matrices
- Fractions and Binomials
- Aligning equations
- Operators
- Spacing in math mode
- Integrals, sums and limits
- Display style in math mode
- List of Greek letters and math symbols
- Mathematical fonts
- Using the Symbol Palette in Overleaf
Figures and tables
- Inserting Images
- Tables
- Positioning Images and Tables
- Lists of Tables and Figures
- Drawing Diagrams Directly in LaTeX
- TikZ package
References and Citations
- Bibliography management with bibtex
- Bibliography management with natbib
- Bibliography management with biblatex
- Bibtex bibliography styles
- Natbib bibliography styles
- Natbib citation styles
- Biblatex bibliography styles
- Biblatex citation styles
Languages
- Multilingual typesetting on Overleaf using polyglossia and fontspec
- Multilingual typesetting on Overleaf using babel and fontspec
- International language support
- Quotations and quotation marks
- Arabic
- Chinese
- French
- German
- Greek
- Italian
- Japanese
- Korean
- Portuguese
- Russian
- Spanish
Document structure
- Sections and chapters
- Table of contents
- Cross referencing sections, equations and floats
- Indices
- Glossaries
- Nomenclatures
- Management in a large project
- Multi-file LaTeX projects
- Hyperlinks
Formatting
- Lengths in LaTeX
- Headers and footers
- Page numbering
- Paragraph formatting
- Line breaks and blank spaces
- Text alignment
- Page size and margins
- Single sided and double sided documents
- Multiple columns
- Counters
- Code listing
- Code Highlighting with minted
- Using colours in LaTeX
- Footnotes
- Margin notes
Fonts
Presentations
Commands
Field specific
- Theorems and proofs
- Chemistry formulae
- Feynman diagrams
- Molecular orbital diagrams
- Chess notation
- Knitting patterns
- CircuiTikz package
- Pgfplots package
- Typesetting exams in LaTeX
- Knitr
- Attribute Value Matrices
Class files
- Understanding packages and class files
- List of packages and class files
- Writing your own package
- Writing your own class