%% %% This is file `mcode.sty' %% %% It is supposed to help you easily include MATLAB source code %% into LaTeX document, but have it nicely highlighted, unsing %% the great listings package. %% %% Usage: Include your MATLAB source code by using %% %% \begin{lstlisting} %% YOUR CODE HERE %% \end{lstlisting} %% %% or as an inline object via \mcode{YOURCODE}. %% %% For your convenience, this package has the following options: %% %% - bw if you intend to print the document (highlighting done %% via text formatting (bold, italic) and shades of gray) %% %% - numbered if you want line numbers %% %% - framed if you want a frame around the source code blocks %% %% - final if you have ``gloablly'' set the draft option, the %% listings package will not output the code at all. to %% force it to do so anyway, load this package with the %% final option (passes the ``final'' on to listings). %% %% Example of use: \usepackage[numbered,framed]{mcode} %% in your document preamble. %% %% Note: inside code blocks you can 'escape' to LaTeX math mode %% by using § YOUR LATEX CODE §, which is especially useful in %% comments... %% %% Another feature of the listings package is that you can re- %% place certain strings by LaTeX strings; this is used for %% some relation symbols, see below... %% %% Mat Odijk pointed this out, you may include entire m-files %% using the command \lstinputlisting{YOUR-FILE.m}. Thanks for %% the tip! %% %% Feel free to edit things, and refer to the listings package %% documentation for more infos. %% %% If you have any questions, feel free to ask: floz@gmx.de %% %% Usolved problem: long lines of code that are wrapped with %% '...', and things thereafter being comments..... %% but i'm working on it ;-) %% %% Author: Florian Knorn, floz@gmx.de %% %% Version history: %% 1.2 -- Added \lstset{showstringspaces=false} %% 1.1 -- Added \mcode command and [final] option %% 1.0 -- Release \def\fileversion{1.2} \def\filedate{2005/11/17} \typeout{Package: `mcode' \fileversion\space <\filedate>} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{mcode}[\filedate\space\fileversion] % for bw-option \newif\ifbw \DeclareOption{bw}{\bwtrue} \ifbw\typeout{mcode: settings optimized for printing!} \else\typeout{mcode: settings optimized for display!}\fi % numbered option \newif\ifnumbered \DeclareOption{numbered}{\numberedtrue} % final option \newif\iffinal \DeclareOption{final}{\finaltrue} % for framed option \newif\ifframed \DeclareOption{framed}{\framedtrue} \DeclareOption*{% default \PackageWarning{mcode}{Unknown option `\CurrentOption' !}% } \ProcessOptions % with this command, you can typeset syntax highlighted mcode ``inline'', % for example when you talk about \mcode{for}--loops ... \newcommand{\mcode}[1]{\lstinline[basicstyle=\lstbasicfont]|#1|} % check if color command exists \ifx\color\undefined% \RequirePackage{color}% \fi % check if listings has been loaded \ifx\lstset\undefined% \iffinal \RequirePackage[final]{listings} \else \RequirePackage{listings} \fi \fi % check if textcomp has been loaded (this package is needed % for upright quotes '' (instead of typographic ones `´)... \ifx\textasciigrave\undefined% \RequirePackage{textcomp}% \fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % C O N F I G S --- C U S T O M I Z E H E R E % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % define the wanted font for all highlightings here \def\lstbasicfont{\fontfamily{pcr}\selectfont} % now let's define our own version of matlab highlighting \lstdefinelanguage{matlabfloz}{% alsoletter={...},% morekeywords={% % keywords break,case,catch,continue,elseif,else,end,for,function,global,% if,otherwise,persistent,return,switch,try,while,..., classdef,properties,methods},% comment=[l]\%,% % comments morecomment=[l]...,% % comments morestring=[m]',% % strings }[keywords,comments,strings]% \ifbw % use font formating and gray 'colors' \lstset{language=matlabfloz, % use our version of highlighting keywordstyle=\bfseries, % keywords in bold commentstyle=\color[gray]{0.6}\itshape, % comments light gray and italic stringstyle=\color[gray]{0.5} % strings darker gray } \else% notbw => use colors : ) \lstset{language=matlabfloz, % use our version of highlighting keywordstyle=\color[rgb]{0,0,1}, % keywords commentstyle=\color[rgb]{0.133,0.545,0.133}, % comments stringstyle=\color[rgb]{0.627,0.126,0.941} % strings } \fi%bw \lstset{% basicstyle={\lstbasicfont\footnotesize}, % use font and smaller size showstringspaces=false, % do not emphasize spaces in strings tabsize=4, % number of spaces of a TAB mathescape=true,escapechar=§, % escape to latex with §...§ upquote=true, % upright quotes aboveskip={1.5\baselineskip}, % a bit of space above columns=fixed, % nice spacing % % the following is for replacing some matlab relations like >= or ~= % by the corresponding LaTeX symbols, which are much easier to read ... %% literate=% %% {~}{{$\neg$}}1 % \neg %% {<=}{{\tiny$\leq$}}1 % \leq %% {>=}{{\tiny$\geq$}}1 % \geq %% {~=}{{\tiny$\neq$}}1 % \neq %% {delta}{{\tiny$\Delta$}}1% \Delta } \ifnumbered% numbered option \lstset{% numbersep=3mm, numbers=left, numberstyle=\tiny, % number style } \fi \ifframed% framed option \lstset{% frame=single, % frame } \ifnumbered% \lstset{% framexleftmargin=6mm, xleftmargin=6mm % tweak margins } \fi \fi \endinput %% End of file `mcode.sty'.